Class Group
Represents a group containing some subset of all
users. Each group has its own Group#now namespace.
Defined in: group.js.
| Constructor Attributes | Constructor Name and Description |
|---|---|
|
Group()
|
| Field Attributes | Field Name and Description |
|---|---|
|
The name associated with the group.
|
| Method Attributes | Method Name and Description |
|---|---|
|
addUser(clientId)
Adds the user identified by clientId to this group.
|
|
|
count(callback)
Used to find the cardinality of the group (how
many users it contains).
|
|
|
exclude(clientIds)
Returns a new Group that is identical to the calling
group, except with the specified clients excluded.
|
|
|
getUsers(callback)
Used to retrieve a list of the client IDs
corresponding to all users in the group.
|
|
|
hasClient(clientId, callback)
Used to determine a given user's membership in the
group.
|
|
|
removeUser(clientId)
Removes the user identified by clientId from this group.
|
| Event Attributes | Event Name and Description |
|---|---|
|
connect()
Called in the context of a user when the server
first receives a message from the given user.
|
|
|
Called in the context of a user who has just
disconnected from the server.
|
|
|
join()
Called in the context of a user who has just been
added to the group.
|
|
|
leave()
Called in the context of a user who has just been
removed from the group.
|
Field Detail
{String}
groupName
The name associated with the group.
Method Detail
addUser(clientId)
Adds the user identified by clientId to this group.
everyone.addUser('1234567890');
- Parameters:
- {String} clientId
- The client ID associated with the target user.
connected()
- Deprecated:
- As of 0.7.0. Use nowjs:connect instead.
count(callback)
Used to find the cardinality of the group (how
many users it contains).
everyone.count(function (ct) { console.log(ct); });
- Parameters:
- {Function} callback
- Called with a Number corresponding to the group's user count.
disconnected()
- Deprecated:
- As of 0.7.0. Use nowjs:disconnect instead.
{Group}
exclude(clientIds)
Returns a new Group that is identical to the calling
group, except with the specified clients excluded. The returned
group automatically updates to accommodate any changes made to
its parent group.
everyone.now.distribute = function (msg) { everyone.exclude([this.user.clientId]).now.receive(this.now.name, msg); };
factionOne.now.distribute = function (msg) { factionTwo.getUsers(function (users) { factionOne.exclude(users).now.receive(this.user.clientId, msg); }); };
- Parameters:
- {Array} clientIds
- A list of client IDs corresponding to clients to exclude.
getUsers(callback)
Used to retrieve a list of the client IDs
corresponding to all users in the group.
everyone.getUsers(function (users) { for (var i = 0; i < users.length; i++) console.log(users[i]); });
- Parameters:
- {Function} callback
- Called with an Array of Strings corresponding to the client IDs of all users in the group.
- See:
- nowjs#getClient
hasClient(clientId, callback)
Used to determine a given user's membership in the
group.
group.hasClient('1234567890', function (bool) { if (bool) { console.log('User is a member of `group`.'); } });
- Parameters:
- {String} clientId
- The client ID associated with the target user.
- {Function} callback
- Called with a Boolean indicating the user's membership in the group.
removeUser(clientId)
Removes the user identified by clientId from this group.
otherGroup.removeUser('1234567890');
- Parameters:
- {String} clientId
- The client ID associated with the target user.
Event Detail
connect()
Called in the context of a user when the server
first receives a message from the given user.
- Deprecated:
- As of 0.7.0. Use nowjs#connect instead.
disconnect()
Called in the context of a user who has just
disconnected from the server.
- Deprecated:
- As of 0.7.0. Use nowjs#disconnect instead.
join()
Called in the context of a user who has just been
added to the group.
everyone.on('join', function () { otherGroup.addUser(this.user.clientId); });
leave()
Called in the context of a user who has just been
removed from the group.
otherGroup.on('leave', function () { // Store the context, i.e. the user who has just left. var self = this; // Check that the user is still connected to the server. everyone.hasClient(this.user.clientId, function (bool) { if (bool) { // Send parting words to the client. this.now.receive('SERVER', 'Goodbye. I'll miss you dearly.'); } }); });


Jonathan Pool
Revision date: 23 December 2018
Expected retirement age:
If you expect never to retire, leave blank. Otherwise, give your expected age as a whole number of years.
For a conservative plan, choose the youngest age at which you are likely to retire.


A system for protecting the 'master' code of a project.
With Git Branching, each new feature is developed in its own branch before it is merged with the master.
Lorem ipsum dolor sit amet consectetur adipisicing elit. Fuga ducimus molestiae illum iusto. Quam cumque, porro magni nisi id neque amet ipsam, dolor ab voluptas ratione dolorem minima debitis quasi?


Click over to these sites for more info on the Looney Tunes, Space Jam, and other groovy Warner Bros. movies! Warner Studio Stores Looney Tunes Karaoke Warner Bros. Online Warner Bros. Movies Warner Bros. Virtual Lot More on the making of Space Jam


2017 Reading List - Updated on Feb 2, 2017
2017 Reading List - Updated on Feb 2, 2017
| No | Resources | Category | Type | Status |
|---|---|---|---|---|
| 1. | W3C school HTML | Programming | Online |
|
| 2. | W3C school CSS | Programming | Online |
|
| 3. | Twitter Bootstrap2 by Peter Shaw | Programming | e-Books |
|
| 4. | Pro Git Book by Scott Chacon and Ben Straub | Programming | Online |
|
| 5. | 公正 | Sociology | Book |
|
| 6. | Python Scrapy | Programming | Online |
|
| 7. | Jekyll Documents | Programming | Online |
|
| 8. | Shoe Dog by Phil Knight | Biography | Book |
|
| 9. | Vim User Mannual Document | Programming | Online |
|
| 10. | Front End Development Certification | Programming | Online |
|
| 11. | 时间简史 | Science | Book |
|


Principal Display Panel
150 Tablets
59528-0508-5
MagneBind 300
Dietary Supplement
Phosphate Binder
Directions
Swallow 1-3 tablets with meals, or as directed by the physician.
Dietary Supplement Phosphate Binder
MagneBind 300 is a dietary supplement that binds dietary phosphate. By binding with dietary phosphate, oral supplementation with magnesium and calcium can reduce absorption of dietary phosphate. †
†This statement has not been evaluated by the Food and Drug Administration. This product is not intended to diagnose, treat, cure or prevent any disease.
Nephro-Tech, Inc.


We all have seen ourselves stuck in emergency situations. This can be an urgent need to consult a doctor, or a place to meet friends.
Often, finding the nearest place that addresses your need turns out to be cumbersome.
Hey, don't worry! I am here to address all your concerns.
All you need to do is to type your city name or address in the address bar and select an option from the drop- down list.
Bang On! You have the desired list of all the nearby locations, as per your need.


@ApiStatus.NonExtendable
.
The @ApiStatus.NonExtendable
annotation indicates that the class, interface, or method must not be extended,
implemented, or overridden.
Since casting such interfaces and classes to the internal library implementation is rather common,
if a client provides a different implementation, you will get ClassCastException
.
Adding new abstract methods to such classes and interfaces will break the compatibility with the client's implementations.


Contents
Short Descriptions
|
accesses Linux SCSI logging level information. |
|
|
checks SCSI device support for mandatory commands. |
|
|
does the SCSI READ CAPACITY command on disks. |
|
|
does the SCSI TEST UNIT READY on devices. |
|
|
checks for SCSI to ATA Translation (SAT) device support. |
|
|
starts one or more SCSI disks. |
|
|
stops one or more SCSI disks. |
|
|
fetches the temperature of a SCSI device. |
|
|
performs a SCSI BACKGROUND CONTROL command on a device to perform "advanced background operations". |
|
|
sends the SCSI COMPARE AND WRITE command to device. |
|
|
sends the SCSI RECEIVE COPY RESULTS command (XCOPY related). |
|
|
copies data to and from files and devices. Specialised for devices that understand the SCSI command set. |
|
|
takes SCSI sense data in binary or as a sequence of ASCII hexadecimal bytes and decodes it. |
|
|
changes ownership of a LUN from another Service-Processor to this one. |
|
|
formats or resizes a SCSI disk (perhaps changes its block size). |
|
|
sends a SCSI GET CONFIGURATION command (MMC-4 +). |
|
|
sends a SCSI GET PHYSICAL ELEMENT STATUS command to a device. |
|
|
sends the SCSI GET LBA STATUS command. |
|
|
sends a SCSI REPORT or SET IDENTIFYING INFORMATION command. |
|
|
access mode page information for a SCSI (or ATAPI) device. |
|
|
sends a SCSI INQUIRY or ATA IDENTIFY (PACKET) DEVICE command and outputs the response. |
|
|
access log pages with SCSI LOG SENSE command. |
|
|
sends the SCSI REPORT LUNS command. |
|
|
displays mapping between linux sg and other SCSI devices. |
|
|
maps a special file to a SCSI generic (sg) device (or vice versa). |
|
|
copies data to and from files and devices. Specialized for devices that understand the SCSI command set and does memory mapped transfers from sg devices. |
|
|
reads mode pages with SCSI MODE SENSE command. |
|
|
reports information on supported SCSI commands or task management functions. |
|
|
copies data to and from files and devices.


Chocolate Pizza
POSTED ON 9 MAY 2021/DESSERTS
For the fig-swirl: Melt butter over medium heat in a saucepan. Add brown sugar and stir to dissolve. Halve all of the figs and toss in the saucepan with water and lemon juice. Cook over medium heat, stirring frequently, until you have a chunky-jammy mixture. Add salt with one or two stirs, set aside and let cool completely.
Ice cream: In a small pot over medium heat, combine milk, and granulated sugar until sugar is completely dissolved and the milk is just barely lukewarm. Whisk in the egg yolks. Set mixture in the fridge and wait until the fig mixture is cooled.
Using an ice cream machine, pour liquids into the frozen basin and process according to manufacturer instructions, i.e., let spin and thicken for 20 minutes before adding mascarpone, fig jam mixture, and the nuts. Continue to process for +/- 10 minutes. Pour semi-frozen mixture into a pyrex dish or glass Tupperware. Freeze for at least two hours before serving.
Vanessa Stevenson
Food enthusiast, photography fan. Add a pinch of raw foods and that’s pretty much who I am.


| Number of Classes | Line Coverage | Mutation Coverage |
|---|---|---|
| 11 | 76% | 67% |
| Name | Line Coverage | Mutation Coverage |
|---|---|---|
| IR.java | 78% |
48% |
| InputId.java | 100% |
50% |
| JSDocInfo.java | 91% |
85% |
| JSDocInfoBuilder.java | 91% |
85% |
| JSTypeExpression.java | 93% |
93% |
| Node.java | 83% |
81% |
| ScriptRuntime.java | 6% |
2% |
| SimpleErrorReporter.java | 48% |
25% |
| SourcePosition.java | 91% |
80% |
| Token.java | 49% |
44% |
| TokenStream.java | 53% |
37% |


Hi!
I'm Alex Westholm
CTO @ Third Reef Partners
Welcome to...
An Introduction to the Haskell Type System
through the lens of the Expression Problem
or...
From Stringly to Strongly to Strangely Typed
Goals:
- Understand the expression problem
- Gain appreciation for Haskell's type system
I'm an attorney, so... Disclaimers!
- I'm not Philip Wadler
- This is complex stuff
- but don't be afraid of Haskell
- If a term is unknown, ask!
What is the Expression Problem?
- Extensibility of function
- Extensibility of data
- Static type safety
- Separate compilation
Introducing Types in Haskell
- Type Synonyms:
- Newtypes:
- and the data keyword...
Algebraic Data Types
- Types = sets of values
- Product Types:
- Sum Types:
- Closed for extension :(
Designing with Types
- Why bother encoding alternatives and relations?
- "Make Illegal States Unrepresentable" - Yaron Minsky
- Fewer logic errors Beyond the type boundary
- How? ...
Designing with Types - Heuristics
- Is there business logic surrounding my data that could be encoded with the type system?
- Am I trying to represent data with variations that should be treated in aggregate?
- Use a sum type!
- Let the type checker tell you if you're writing partial functions
Designing with Types - Heuristics
- Is there business logic surrounding my data that could be encoded with the type system?
- Do all the components of my data that are grouped together logically depend on one another?
- Extract independent subsets to separate product types.
- Let the type checker tell you if you're failing to provide a complete set of data
Designing with Types - Heuristics
- Is there business logic surrounding my data that could be encoded with the type system?
- Are there constraints or validation logic that could be used to prevent bad data?
- Hide value constructors and export functions that perform these checks before returning values
- "Smart Constructors" bridge the type boundary and provide runtime logic checks on dirty data
Designing with Types - Heuristics
- Is there business logic surrounding my data that could be encoded with the type system?
- Are there container types that can help me make my data more correct? Am I encoding logic in special values?
- Optionality - Use Maybe to indicate presence or absence rather than some special value
- Error potential - Use Either to return a successful value or an error, rather than special values
Functional Extensibility
- Every function extends the API of some type.
- What about handling multiple types?
- Ad hoc polymorphism via typeclasses
- Creates sets of types based on shared functionality
- Similar to OO interfaces, and open for extension :)
- Our functions can now extend to new types
Typeclasses
data Language = PHP | Elixir
class Printable a where
toConsole :: a -> IO ()
-- free to create more instances later
instance Printable Language where
toConsole PHP = putStrLn "Ewwwww...."
toConsole Elixir = putStrLn "Much better choice!"
Data Extensibility
- Sum types are closed after definition :(
- Typeclasses are not :)
- Typeclasses don't require bodies...
A solution to the XProblem
- Fake sum types via typeclasses
- Each operation on the type is another typeclass
- Unusable otherwise... fake sum type has no operations
- Code!
Damned Type Boundary!
- Can't return an instance of our fake sum type!
- Haskell defaults to universal quantification of type variables
- Solution is Existential Types, which obviously do away with that
- Code!
Thanks!
alex.westholm@thirdreef.co


HackerSpaceVN
Welcome!
home
time & place
archives
about
2020
08 Jan -
Hello World
Categories
blog
Tags
©
There is no copyright but the right to copy


Home
Trees
Indices
Help
[
hide private
]
[
frames
] |
no frames
]
Identifier Index
[
A
B
C
D
E
F
G
H
I
J K
L
M
N
O
P
Q
R
S
T
U
V
W
X Y Z
_
]
A
about()
(in
Server
)
acquire()
(in
GlobalLock
)
Analyse()
(in
CmdLine
)
B
BankComServer
(in
ServerLibs
)
BankServicesServer
(in
ServerLibs
)
C
Close()
(in
Services
)
Close()
(in
GlobalLock
)
createAccount()
(in
ServerAPI
)
Close()
(in
DataBaseBank
)
cmdLine
(in
ServerLibs
)
createCard()
(in
ServerAPI
)
Close()
(in
InterestRateManager
)
CmdLine
(in
ServerLibs.cmdLine
)
D
DataBase
(in
ServerLibs
)
deleteAccount()
(in
ServerAPI
)
DepositInterest()
(in
DataBaseBank
)
DataBaseBank
(in
ServerLibs.DataBase
)
deposit()
(in
ServerAPI
)
DEFAULT_BACKUP_NAME
(in
ServerLibs.DataBase
)
Deposit()
(in
DataBaseBank
)
E
echo()
(in
ServerAPI
)
exit()
(in
Server
)
F
FILE
(in
CmdLine
)
file()
(in
CmdLine
)
G
GetAccount()
(in
DataBaseBank
)
GetAccountIDs()
(in
DataBaseBank
)
GlobalLock
(in
ServerLibs.DataBase.globalLock
)
getAccountHistory()
(in
ServerAPI
)
GetVectorStamps()
(in
VectorStamps
)
GROUP
(in
CmdLine
)
GetAccountHistory()
(in
DataBaseBank
)
globalLock
(in
ServerLibs.DataBase
)
H
help()
(in
CmdLine
)
helpMsg
(in
CmdLine
)
hintMsg
(in
CmdLine
)
I
InterestRate
(in
ServerLibs.DataBase
)
InterestRateManager
(in
ServerLibs.DataBase.InterestRate
)
L
listAccounts()
(in
ServerAPI
)
listAllAccounts()
(in
Server
)
LoadFromFile()
(in
DataBaseBank
)
N
NAME
(in
CmdLine
)
NewClient()
(in
DataBaseBank
)
NSPORT
(in
CmdLine
)
NewAccount()
(in
DataBaseBank
)
NSHOSTNAME
(in
CmdLine
)
P
payService()
(in
ServerAPI
)
PERIOD
(in
InterestRateManager
)
PUBLISHHOST
(in
CmdLine
)
R
RATE
(in
InterestRateManager
)
run()
(in
Server
)
RunInterface()
(in
Server
)
release()
(in
GlobalLock
)
run()
(in
InterestRateManager
)
S
SaveToFile()
(in
DataBaseBank
)
ServerAPI
(in
ServerLibs.BankComServer
)
SHOSTNAME
(in
CmdLine
)
ScheduleDeposit()
(in
InterestRateManager
)
ServerLibs
shutdown()
(in
Server
)
Server
(in
Services
)
Services
(in
ServerLibs.BankServicesServer
)
SPORT
(in
CmdLine
)
Server
(in
ServerLibs
)
SetAccountOwner()
(in
DataBaseBank
)
startServer()
(in
Services
)
T
transfer()
(in
ServerAPI
)
U
UpdateAccount()
(in
DataBaseBank
)
usageMsg
(in
CmdLine
)
V
VectorStamps
(in
ServerLibs.DataBase
)
viewAccountHistory()
(in
Server
)
VERBOSE
(in
CmdLine
)
viewBalance()
(in
ServerAPI
)
W
withdraw()
(in
ServerAPI
)
Withdrawal()
(in
DataBaseBank
)
_
__applyRotationInterest()
(in
InterestRateManager
)
__init__()
(in
DataBaseBank
)
__package__
(in
ServerLibs.DataBase
)
__CalcTimeToNext()
(in
InterestRateManager
)
__init__()
(in
InterestRateManager
)
__package__
(in
ServerLibs.DataBase.globalLock
)
__createNamingService()
(in
Services
)
__init__()
(in
VectorStamps
)
__package__
(in
ServerLibs
)
__deleteInterest()
(in
InterestRateManager
)
__init__()
(in
GlobalLock
)
__package__
(in
ServerLibs.cmdLine
)
__get_my_ip_address()
(in
Services
)
__init__()
(in
Server
)
__Read()
(in
GlobalLock
)
__GetFirstEmptyId()
(in
DataBaseBank
)
__init__()
(in
CmdLine
)
_GetStampsData()
(in
VectorStamps
)
__init__()
(in
ServerAPI
)
__package__
(in
ServerLibs.BankComServer
)
_NewEvent()
(in
VectorStamps
)
__init__()
(in
Server
)
__package__
(in
ServerLibs.BankServicesServer
)
_replace()
(in
DataBaseBank
)
__init__()
(in
Services
)
__package__
(in
ServerLibs.DataBase.InterestRate
)
_SetStampsData()
(in
VectorStamps
)
Home
Trees
Indices
Help
Generated by Epydoc 3.0.1 on Thu Dec 23 18:37:18 2010
http://epydoc.sourceforge.net


| {{command.shortcut}} not set | {{command.description}} |
To change these keyboard shortcuts, type chrome://extensions/
in the address bar
to open up the extensions page. At the bottom of that page you'll see a Keyboard Shortcuts option.
Click it, and you can set up custom shortcuts for Form Filler from there.


User Info
Nathan Hall
Junior 45
Dorm Info
Singles:
0
of
0
avaliable
Doubles:
0
of
0
avaliable
Triples:
0
of
0
avaliable
Quads:
0
of
0
avaliable
See Full Statistics
Fill out the information and click on a room to place a student in it
Back to Campus Map
Apartment List


- c -
- c : Test::Float::Arithmetic , Test::Float::Dom , Test::Float::MiniModelLin , Test::Int::Arithmetic , Test::Int::GCC , Test::Set::RelOp , Test::Int::Linear , Test::Int::BinPacking , Test::Int::Member , Test::Int::MiniModelBoolean , Test::Float::Rel , Test::Int::Bool , Test::Int::MiniModelCount , Test::Int::MiniModelLin , Test::Int::Circuit , Test::Int::MiniModel , Test::Int::NoOverlap , Test::Float::Linear , Test::Float::Transcendental , Test::Int::Count , Test::Int::NValues , Test::Int::Rel , Test::Int::Cumulative , Test::Int::Sequence , Test::Int::Unary , Test::Float::Trigonometric , Test::Int::Element , Test::NoGoods , Test::Search , Test::Int::Extensional , Test::Int::MiniModelSet , Test::Set::RelOpConst
- c1f1 : Test::Int::Cumulatives
- c1f2 : Test::Int::Cumulatives
- c1f3 : Test::Int::Cumulatives
- c1t1 : Test::Int::Cumulatives
- c1t2 : Test::Int::Cumulatives
- c1t3 : Test::Int::Cumulatives
- c2f1 : Test::Int::Cumulatives
- c2f2 : Test::Int::Cumulatives
- c2f3 : Test::Int::Cumulatives
- c2t1 : Test::Int::Cumulatives
- c2t2 : Test::Int::Cumulatives
- c2t3 : Test::Int::Cumulatives
- c3f1 : Test::Int::Cumulatives
- c3f2 : Test::Int::Cumulatives
- c3f3 : Test::Int::Cumulatives
- c3f_1 : Test::Int::Cumulatives
- c3f_2 : Test::Int::Cumulatives
- c3f_3 : Test::Int::Cumulatives
- c3t1 : Test::Int::Cumulatives
- c3t2 : Test::Int::Cumulatives
- c3t3 : Test::Int::Cumulatives
- c3t_1 : Test::Int::Cumulatives
- c3t_2 : Test::Int::Cumulatives
- c3t_3 : Test::Int::Cumulatives
- c_d : Gecode::Search::Config
- card : Gecode::Set::Limits
- cb : Test::Float::Channel
- cfd : Test::Int::Channel
- cfd11 : Test::Int::Channel
- cfd35 : Test::Int::Channel
- cfv : Test::Int::Channel
- cfv11 : Test::Int::Channel
- cfv35 : Test::Int::Channel
- chb_alpha_decrement : Gecode::Kernel::Config
- chb_alpha_init : Gecode::Kernel::Config
- chb_alpha_limit : Gecode::Kernel::Config
- chb_qscore_init : Gecode::Kernel::Config
- chd : Test::Int::Channel
- chv : Test::Int::Channel
- ci : Test::Float::Channel
- clma : Test::Int::Channel
- clmb : Test::Int::Channel
- clmc : Test::Int::Channel
- clone : Gecode::Search::Config
- cls : Test::Int::Channel
- cn : Test::Set::RelOp
- cos_xx_a : Test::Float::Trigonometric
- cos_xx_b : Test::Float::Trigonometric
- cos_xx_c : Test::Float::Trigonometric
- cos_xy_a : Test::Float::Trigonometric
- cos_xy_b : Test::Float::Trigonometric
- cos_xy_c : Test::Float::Trigonometric
- cos_xy_sol_a : Test::Float::Trigonometric
- cos_xy_sol_b : Test::Float::Trigonometric
- cos_xy_sol_c : Test::Float::Trigonometric
- count_bnd_d : Test::Int::Distinct
- count_bnd_s : Test::Int::Distinct
- count_dom_d : Test::Int::Distinct
- count_dom_s : Test::Int::Distinct
- count_val_d : Test::Int::Distinct
- count_val_s : Test::Int::Distinct
- cpprofiler_port : Gecode::Search::Config
- csd : Test::Int::Channel
- csv : Test::Int::Channel


Handde1096.github.io
Shure - ANI22 The ANI22 device can bring up to two line / mic signals onto or from a Dante network for easy audio routing and convenient browser-based remote control. Available in XLR and block connector. ANI22 Audio Network Interface - shure.de. The ANI22 Audio Network Interface from Shure is designed to bring up to two line/mic signals onto or from a Dante network. It can be utilized for easy audio routing and convenient browser-based remote control. In addition, it is built with analog XLR connectors. Analog Connections Inputs Active Balanced ANI22-XLR (2) XLR connector ANI22-BLOCK (2) 6-pin block connector Outputs Impedance Balanced ANI22-XLR (2) XLR connector.
Find world-renowned microphones, quality wireless systems, premium listening gear, and other audio products from Shure. ANI22 Audio Network Interface Shure Americas. Die MXA310, ANI22, ANIUSB-MATRIX und ANI4IN von Shure unterstützen Multicast-Übertragung. Dies bedeutet, dass Flüsse an mehrere Geräte übertragen werden können – so viele wie das Netzwerk unterstützen kann. Wenn Unicast-Flüsse genutzt werden, kann jedes dieser Geräte mit bis zu zwei Dante-Geräten verbunden werden. The Shure MXA310, ANI22, ANIUSB-MATRIX and ANI4IN support multicast transmission. This means that flows can transmit to multiple devices -- as many as the network can support. If using unicast flows, each of these devices can connect with up to two Dante receiver devices.
The ANI22 can bring up to two line / mic signals onto or from a Dante network for easy audio routing and convenient browser-based remote control. Available with XLR or block connectors. Shure ANI22XLR Audio Network Interface (XLR Connectors). 2 1. READ these instructions. 2. KEEP these instructions. 3. HEED all warnings. 4. FOLLOW all instructions. 5. the apparatus has been damaged in any DO NOT use this apparatus near water. Die ANI22 liefert Dante-auf-analoges Signalrouting, das es ermöglicht, zwei Audiokanäle in und aus einem Dante Netzwerk zu routen. Verfügbar mit XLR- und Blockstecker. ANI22 Specification Sheet (English). ANI22 Firmware Release Notes Shure Americas.
Shure Publications User Guides ANI22. AUDIO PROCESSING ANI22 - Shure.


Home
About us
Services
Log in
Sign up
SHOPPABLE
The only place, from where you would love to shop.
Watch Video
Products


Smart Stairs Switch
Status and settings
Status
State:
Mode:
DeviceID:
Uptime:
SSID:
IP:
Settings
State
On/Off
Mode:
Timer
Manual
Delay:
Set
Wifi
SSID:
PASS:
Save
MQTT
Server:
Topic:
Save


--- title: Block Grid layout: build/doc/layouts/sass.html --- *** # Block Grid
If you use the `sm-block-grid` only, the grid will keep its spacing and configuration no matter the screen size. If you use `lg-block-grid` only, the list items will stack on top of each other for small devices. If you use both of those classes combined, you can control the configuration and layout separately for each breakpoint.


A Responsible Corporate Citizen
Ziraat Bank believes that full compliance with corporate governance rules and laws is what guarantees sustainable economic performance and ethical and fair competition and that this is the most fundamental means of balancing and developing stakeholders’ interests.
Ziraat Bank gives great importance to complying with the law, to transparency, to ethical conduct, and to accountability and it carries out all of its operations in line with such principles.
Ziraat Bank believes that full compliance with corporate governance rules and laws is what guarantees sustainable economic performance and ethical and fair competition and that this is the most fundamental means of balancing and developing stakeholders’ interests.
For Ziraat Bank, how goals are achieved is just as important as achieving the goals themselves.
Every Ziraat employee is expected to be mindful of the law and to act ethically and honestly in every decision that is taken and in every action that is performed in the Bank’s name. This simple rule is equally applicable to everyone from members of the Board of Directors to junior clerks on duty in Turkey’s remotest town.
Ziraat Bank’s corporate governance structure
The Ziraat Bank Board of Directors consists of nine members. This number is deemed to be sufficient to permit the effective organization and conduct of the board’s activities. The duties of board chairman and of bank general manager are performed by different individuals.
For information about the members of the Ziraat Bank Board of Directors, please see pages 64-67 of the Bank’s 2013 annual report.
The general manager has full authority and responsibility for the management and coordination of Ziraat Bank’s day-to-day business in the broadest sense. The Bank has ten assistant general managers, each one of whom is responsible for the conduct of designated duties. Ziraat Bank’s senior management consists of its general manager and its assistant general managers.
For information about the members of Ziraat Bank’s senior management, please see pages 68-71 of the Bank’s 2013 annual report.
Ziraat Bank is a state-owned bank. There are no ultimate controlling shareholders.
There are four committees charged with specific activities at Ziraat Bank.
These four committees, which have been set up by Ziraat Bank in accordance with the requirements of the Turkish Commercial Code, the Banking Act, and other applicable laws, regulations, and administrative provisions, consist of the Credit Committee, the Audit Committee, the Corporate Governance Committee, and the Remuneration Committee. The Board of Directors is authorized to set up other committees if needed or if deemed to be necessary.
For information about the committees set up at Ziraat Bank, please see page 76 of the Bank’s 2013 annual report.
Internal audit, internal control, and risk management at Ziraat Bank
Internal audit, internal control, and risk management functions at Ziraat Bank are carried out by the Board of Inspectors and by the Internal Control and Risk Management Group. Although these two bodies work in coordination, their duties, responsibilities, and organizational structures are completely independent of each other. Their purview encompasses all bank branches and units as well as subsidiaries and affiliates that are subject to the Bank’s oversight with the aims of ensuring that:
The Ziraat Bank Board of Inspectors employs a staff of 167 bank inspectors to carry out its operations in line with internationally accepted internal auditing standards.
Internal control functions at Ziraat Bank are structured in such a way as to encompass the activities of all domestic and international branches, regional departments, and headquarters units as required by government regulations governing banks’ internal systems.
Internal control functions at all the Bank’s foreign branches are carried out in line with annual internal control plans that are approved by the Audit Committee.
The compliance oversight functions mandated under article 18 of Regulations Concerning The Internal Systems Of Banks are also carried out as part of internal control, at which time all activities carried out or planned by the Bank and new banking transactions and products are reviewed to determine that they are in compliance with applicable laws, regulations, and administrative provisions, with the Bank’s internal policies and rules, and with generally-accepted banking practices.
Risk management at Ziraat Bank
In the conduct of its risk management activities, Ziraat Bank’s fundamental approach is to foster a risk culture throughout the Bank and to ensure that risk management functions are as close as possible to best practices by making ongoing improvements in both systems and human resources quality.
Risk management activities are conducted under the main headings of:
The ultimate goal of all risk management activities is to achieve compliance with internationally-accepted best practices.
For information about internal audit, internal control, and risk management functions at Ziraat Bank, please see pages 78-80 of the Bank’s 2013 annual report.
Prevention of money-laundering and terrorism-financing at Ziraat Bank
Ziraat Bank’s efforts to prevent money-laundering and the financing of terrorism are conducted in accordance with policies that are publicly disclosed on the Bank’s website and also in compliance with the requirements of law. The Bank is committed to preventing its products and services from being used to launder money and/or to finance terrorism and it fulfills this commitment by ensuring that its management and personnel comply fully and strictly with mandated standards.
The Audit Committee is charged with the conduct of the compliance program formulated pursuant to Regulations Concerning Compliance Programs For Obligations Pertaining To The Prevention Of Money-Laundering And Terrorism-Financing and with the fulfillment of statutorily mandated duties, authorities, and responsibilities related to such issues.
Conducting all of its operations within the framework of the “Know Your Customer” principle, Ziraat Bank regards, as two fundamental objectives, both establishing the identities of customers and of those acting on their behalf and ensuring that all required records are maintained in full.
Policies in effect at Ziraat Bank
Policies approved and put into effect by the Ziraat Bank Board of Directors are of great importance from the standpoint of the functioning of the Bank’s corporate governance structure.
Disclosure Policy
http://www.ziraatbank.com.tr/en/InvestorRelations/Documents/DisclosurePolicy.pdf
Prevention of Money-Laundering and Terrorism-Financing Policy
http://www.ziraatbank.com.tr/en/OurBank/InvestorRelations/Documents/AMLPolicy.pdf
The following issues have been integrated into the Bank’s HR regulations, which are accessible to all personnel through the Ziraat Bank intranet:
Ziraat Bank’s Environment Policy has been formulated as a component of its Sustainability Policy.
Ziraat Bank Investor Relations Unit
The Ziraat Bank Investor Relations Unit is responsible for managing relations with shareholders in the event that a public offering takes place and also for satisfying the transparency requirements mandated by laws and regulations. This unit is ready to play an effective role in the protection and exercise of shareholder rights, including but not limited to their right of access to information and their right of inspection. Although Ziraat Bank has yet to undertake a public offering, it has already committed itself to behaving as a company that has.
Located at www.ziraatbank.com.tr, Ziraat Bank’s corporate website plays an important role in keeping the public informed with the most current news and information. Although Ziraat Bank is not now a publicly-traded company, it already satisfies many of the requirements of corporate governance principles. Information and documents concerning such matters are published on its website in the Turkish and English languages. Such documentation covers a broad range of issues from trade registration details to the Bank’s existing partnership and management structure, from its articles of association to material event disclosures, and from its financial statements to its annual reports.


Outgoing papal nuncio asks Filipino faithful to give Tagle to ‘Universal Church’
by Leslie Ann AquinoOutgoing Papal Nuncio Archbishop Gabriele Caccia on Monday asked Filipinos to give Cardinal Luis Antonio Tagle to the Universal Church with open arms.
 The cardinal was smiling during his homily, but I know that his heart is broken,” Caccia told the faithful who attended the Mass at the Manila Cathedral for the Feast of the Immaculate Conception.
“The cardinal said yes. We should say yes because God knows better what is good,” he added.
According to Caccia, the people should send the cardinal as their best gift to the Universal Church.
“The best gift we have we give to the universal church. We give with open arms even if the heart is suffering. We give with joy,” he said,
“I would like that we as a Church give the cardinal to the bigger church. He is in position to take care…of the evangelization of people,” added Caccia.
Before he ended his speech, he asked those present to pray and bless the cardinal.
“Bless the cardinal and we pray for him and for his mission to the Universal Church,” Caccia said.
A very emotional Tagle then thanked the people for their prayers.
“Thank you. I will rely on your prayers,” he said.
His Eminence also took the opportunity to thank the nuncio who will soon leave the country as he was recently appointed as new Permanent Observer of the Holy See to the United Nations.
“I know our dear nuncio’s heart is also quite broken. But we want to thank him and wish him all the best and God’s blessings on his new mission as well,” said Tagle.
The Vatican announced the appointment of Tagle as the new Prefect of the Congregation for the Evangelization of Peoples, Sunday.
Meanwhile, the Archdiocese of Manila has yet to issue a statement on the appointment of the cardinal.
Father Reginald Malicdem, the private secretary of the Archbishop of Manila, said they will wait first for the instruction from the Vatican before issuing a statement.
“Its best that the statement that we issue is clear. As of now, a lot of things are still unclear with the cardinal,” he said.


Object attributes
Set "String" value:
Set "number" value:
calculate
For more explanation please visit -
valueOf and toString Wiki


{%extends "issue_base.html"%} {%block body%}
The selected patch doesn't exist in the selected patchset.
Use the patchset chooser above or go back to the issue page.


We exchange tables!
- extend granular niches
- reinvent back-end methodologies
- innovate magnetic functionalities
- revolutionize frictionless schemas
- optimize sticky deliverables
- monetize back-end web services
- harness turn-key e-business
- recontextualize end-to-end infrastructures
- visualize revolutionary models
- architect granular metrics
- drive end-to-end communities
- enable sexy markets
- facilitate leading-edge interfaces
- envisioneer impactful synergies


Guiding principles¶
AvantPy aims to be a project that facilitates learning computer programming while minimizing the pain. AvantPy will strive to make informed decisions about designs based on other successful programming language or environments, and from feedback from its users.
For students and instructors¶
AvantPy aims to:
make it possible for students to learn basic programming concepts in their own language;
provide easy to understand basic error messages, simpler than Python tracebacks;
reduce the number of non-obvious programming idioms, as compared with Python;
allow for an easy transition to programming using standard Python.
In a given dialect, AvantPy keywords and functions should not be thought of as
straight translations from English of the Python keywords; instead, these should be
chosen so that they make sense in a programming context. For example, in the French dialect,
the function input
is named demander
which would normally be translated as ask
.
Similarly, the French equivalent to except
is siexception
which is composed of two words, si
and exception
.
Thus, siexception SyntaxError:
can be read as if exception SyntaxError:
.
A design choice that has been made is to do not translate the names of Python
exceptions, such as SyntaxError
. Beginners will very rarely have to write
these names themselves. Error messages (tracebacks) will be accompanied by
explanatory text written in the students’ preferred language; thus, they will
not need to know how something like SyntaxError
would be written in their
language to understand what it means.
For contributors¶
In addition to users that provide feedback, including bug reports and suggestions for improvements, we can think of three other types of contributors.
Contributor of new language adaptation
As a concrete example, suppose somebody wishes to contribute the information required to create a Russian dialect. Ideally, they should not need any special tools, nor any advanced knowledge of programming. If they do know know English, but know another language supported by AvantPy, they should be able to use that knowledge to easily create a new dialect.
To facilitate this, translation from one dialect into another should be doable by a one-to-one keyword substitution. Such keywords might be essentially compound words in a given language written in such a way that the language’s grammar is not followed but in a way that might nonetheless be relatively easy to understand by beginners.
Translations of messages to user, such as simplified tracebacks, are currently implemented (in theory - not much content yet) using a simple Python dictionary for each language, instead of using a standard method such as that provided by pygettext. This is possibly going to change in once the project’s core functionality is completed (probably around version 0.1).
Contributor of “core” code
Currently, the “core” code does not rely on any “advanced” knowledge of computer science. Ideally, the code should be “easy” to understand and modified by a self-taught intermediate programmer - like the current author.
It is very likely that using more advanced programming techniques could speed up the transformations and error handling done by AvantPy; however, speed of execution is not our ultimate goal: AvantPy aims to be easy to use by beginners, and easy to contribute to by developers.
For third party software¶
AvantPy does not aim to be a full programming environment; it adresses a different need than editors or IDEs aimed at Python programmers. However, AvantPy aims to make it easy for tools like Python’s IDLE, Mu, Thonny, etc., to “hook” to AvantPy and make it available to their users.
Limitations¶
Limited scope
AvantPy is limited in scope: the goal is to provide only a basic set of translated/localized keywords, built-in and error-handling functions, thus making it possible for absolute beginners to learn very basic programming concepts in their own language.
AvantPy does not aim have a localized version of all of Python’s builtin functions, nor does it aim to provide a translation of any modules from Python’s standard library. If AvantPy is successful, it is conceivable that a few additional Python resources, in particular its Turtle module, might be localized. However, no work is planned in this direction in the near future for AvantPy.
Possibly incorrect grammatical structure
AvantPy dialects are assumed to be a one-to-one translations of keywords into the corresponding AvantPy English dialect. Unlike the text that appears on blocks in Scratch or Blockly, it could happen that the simple translation of keywords does not result in grammatically correct word order in a given language.
As a concrete example, AvantPy assumes that separate translations of repeat
and until
exist,
and that they can be combined with a user-defined "condition"
in exactly the following
order:
repeat until "condition":
It is almost certainly the case that this will not yield a grammatically correct phrase in some languages. [If you know of concrete examples, please feel free to contribute.]


LOG-IN
Home
About
Log-in
Contact Us
GPA Calculator
First name:
Last name:
Male
Female
Password:
Copyright © 2018 [Maged]. All rights reserved.


Compose CLI environment variables
Estimated reading time: 4 minutesSeveral environment variables are available for you to configure the Docker Compose command-line behaviour.
Variables starting with DOCKER_
are the same as those used to configure the
Docker command-line client. If you’re using docker-machine
, then the eval "$(docker-machine env my-docker-vm)"
command should set them to their correct values. (In this example, my-docker-vm
is the name of a machine you created.)
Note: Some of these variables can also be provided using an environment file.
COMPOSE_PROJECT_NAME
Sets the project name. This value is prepended along with the service name to
the container on start up. For example, if your project name is myapp
and it
includes two services db
and web
, then Compose starts containers named
myapp_db_1
and myapp_web_1
respectively.
Setting this is optional. If you do not set this, the COMPOSE_PROJECT_NAME
defaults to the basename
of the project directory. See also the -p
command-line option.
COMPOSE_FILE
Specify the path to a Compose file. If not provided, Compose looks for a file named
docker-compose.yml
in the current directory and then each parent directory in
succession until a file by that name is found.
This variable supports multiple Compose files separated by a path separator (on
Linux and macOS the path separator is :
, on Windows it is ;
). For example:
COMPOSE_FILE=docker-compose.yml:docker-compose.prod.yml
. The path separator
can also be customized using COMPOSE_PATH_SEPARATOR
.
See also the -f
command-line option.
COMPOSE_API_VERSION
The Docker API only supports requests from clients which report a specific
version. If you receive a client and server don't have same version
error using
docker-compose
, you can workaround this error by setting this environment
variable. Set the version value to match the server version.
Setting this variable is intended as a workaround for situations where you need to run temporarily with a mismatch between the client and server version. For example, if you can upgrade the client but need to wait to upgrade the server.
Running with this variable set and a known mismatch does prevent some Docker features from working properly. The exact features that fail would depend on the Docker client and server versions. For this reason, running with this variable set is only intended as a workaround and it is not officially supported.
If you run into problems running with this set, resolve the mismatch through upgrade and remove this setting to see if your problems resolve before notifying support.
DOCKER_HOST
Sets the URL of the docker
daemon. As with the Docker client, defaults to unix:///var/run/docker.sock
.
DOCKER_TLS_VERIFY
When set to anything other than an empty string, enables TLS communication with
the docker
daemon.
DOCKER_CERT_PATH
Configures the path to the ca.pem
, cert.pem
, and key.pem
files used for TLS verification. Defaults to ~/.docker
.
COMPOSE_HTTP_TIMEOUT
Configures the time (in seconds) a request to the Docker daemon is allowed to hang before Compose considers it failed. Defaults to 60 seconds.
COMPOSE_TLS_VERSION
Configure which TLS version is used for TLS communication with the docker
daemon. Defaults to TLSv1
.
Supported values are: TLSv1
, TLSv1_1
, TLSv1_2
.
COMPOSE_CONVERT_WINDOWS_PATHS
Enable path conversion from Windows-style to Unix-style in volume definitions.
Users of Docker Machine and Docker Toolbox on Windows should always set this. Defaults to 0
.
Supported values: true
or 1
to enable, false
or 0
to disable.
COMPOSE_PATH_SEPARATOR
If set, the value of the COMPOSE_FILE
environment variable is separated
using this character as path separator.
COMPOSE_FORCE_WINDOWS_HOST
If set, volume declarations using the short syntax
are parsed assuming the host path is a Windows path, even if Compose is
running on a UNIX-based system.
Supported values: true
or 1
to enable, false
or 0
to disable.
COMPOSE_IGNORE_ORPHANS
If set, Compose doesn’t try to detect orphaned containers for the project.
Supported values: true
or 1
to enable, false
or 0
to disable.
COMPOSE_PARALLEL_LIMIT
Sets a limit for the number of operations Compose can execute in parallel. The
default value is 64
, and may not be set lower than 2
.
COMPOSE_INTERACTIVE_NO_CLI
If set, Compose doesn’t attempt to use the Docker CLI for interactive run
and exec
operations. This option is not available on Windows where the CLI
is required for the aforementioned operations.
Supported: true
or 1
to enable, false
or 0
to disable.


{% extends "base_generic.html" %} {% block content %}
Novel was founded on the campus of the University of North Carolina at Chapel Hill by a Master of Public Health candidate at the renowned Gillings School of Global Public Health. Since its inception, Novel has been owned and operated by public health professionals. At Novel our staff is united behind our vision to be the leading platform for public health films across the globe. Special thanks goes to all the alumni, faculty, and staff at UNC who have contributed valuable consultation towards the creation of Novel. The UNC innovation and entrepreneurship community has been a truly inviting family for embracing Novel with open arms. Thank you to all who contributed. Novel will forever be grateful for your efforts.
Currently, Novel’s team consists of an extraordinarily talented group of interns from UNC’s Department of Computer Science. Novel plans to utilize the UNC Chapel Hill community as a resource for future internship and fellowship opportunities for students. As Novel expands, there is a growing need for various positions. Position openings will be posted on our site soon. Interested in Joining Us? Fill out the form on the contact us page for more inquiries.
The University of North Carolina At Chapel Hill
The Gillings School of Global Public Health
Gillings Office of Innovation, Research, and Global Solutions
1789 Venture Lab


_ume It is safe to assume that when you consume too much of a costume, it can become an overwhelming experience.[G|D] When you exhume something from the flume, it will often release a fume of dust and debris into the air.[G|D] The legume was so fragrant that the perfume wafted through the air, coating the plume of smoke surrounding it.[G|D] We can presume that when you resume a task it will subsume any prior progress made on that task.[G|D]


| ${value} Charge Levels | 3 |
| Launches ${value} Projectile(s) | 1 |
| ${value} Piercing Damage | min: [35.0, 45.0, 53.0, 64.0, 72.0, 83.0, 91.0, 103.0, 111.0, 124.0, 138.0, 159.0] |
| ${value} Second(s) Charge Level Duration | 6 |
| +${value}% Physical Damage | 45 60 75 93 108 123 138 156 171 186 203 221 |
| MaxLevel | 8 |
| UltimateLevel | 12 |


KOMA has a new way to support your Startups or your current Business as Communities
We have Micro Service, Micro Application, Micro Service Bus (Middleware) and Micro Application Generator
KOMA Component is something difference from ESB but it has same functions as midleware for your Public Smart Grid Architecture
KOMA has 4 keys for discussions
KOMA Network is a middleware with several protocol as infrastructure
KOMA Mobile is a mobile application framework for mobility tools
KOMA Generator is a micro application generator, it will help become a fast developer
Indonesia IoT Club is a community, a lot of Profesional and Students active in the forums
Decentralize your Application
KOMA Network is a middleware with several protocol such as xmpp for messaging, mqtt for IoT, voip for voice communications and others
We have several implementation with our Micro Service Bus
Let's start your startup with a new way
KOMA Mobile is an android application framework, it can use for instant messaging, communication or mobile transactions
Mobile Application for Micro Business with Smart Infrastructure
KOMA Generator is micro application generator, it can generate your application very fast as required in software development
Instructions to Generate Your Application
1. Install NetBeans IDE 8.2 and install Gradle Support plugin for NetBeans IDE
2. Generate your application, you can add additional tables relations
3. Download and extract your generated application and open with NetBeans IDE
4. Create Database from import.sql file
5. Run and Test
6. Video InstructionIndonesia IoT Club is a Facebook Group for IoT discussion, a lot of Professional, Students and Business persons
Indonesia IoT Club is a group that is expected to facilitate the development of the "Internet of Things" (IoT) in Indonesia.
with this group, members can exchange information and communicate with each device to be able to grow even more.
It is hoped that in the future this group can create another communities
according to the selected segmentation for each its implementation
go to Facebook Group Link
KOMA was release several component as Open Source
The Source Code was managed in GiHub Repositories
Please contact us for more information with below email
yypurdi@gmail.com


FlinkML is designed to make learning from your data a straight-forward process, abstracting away the complexities that usually come with big data learning tasks. In this quick-start guide we will show just how easy it is to solve a simple supervised learning problem using FlinkML. But first some basics, feel free to skip the next few lines if you’re already familiar with Machine Learning (ML).
As defined by Murphy [1] ML deals with detecting patterns in data, and using those learned patterns to make predictions about the future. We can categorize most ML algorithms into two major categories: Supervised and Unsupervised Learning.
Supervised Learning deals with learning a function (mapping) from a set of inputs (features) to a set of outputs. The learning is done using a training set of (input, output) pairs that we use to approximate the mapping function. Supervised learning problems are further divided into classification and regression problems. In classification problems we try to predict the class that an example belongs to, for example whether a user is going to click on an ad or not. Regression problems one the other hand, are about predicting (real) numerical values, often called the dependent variable, for example what the temperature will be tomorrow.
Unsupervised Learning deals with discovering patterns and regularities in the data. An example of this would be clustering, where we try to discover groupings of the data from the descriptive features. Unsupervised learning can also be used for feature selection, for example through principal components analysis.
In order to use FlinkML in your project, first you have to
set up a Flink program.
Next, you have to add the FlinkML dependency to the pom.xml
of your project:
To load data to be used with FlinkML we can use the ETL capabilities of Flink, or specialized
functions for formatted data, such as the LibSVM format. For supervised learning problems it is
common to use the LabeledVector
class to represent the (label, features)
examples. A LabeledVector
object will have a FlinkML Vector
member representing the features of the example and a Double
member which represents the label, which could be the class in a classification problem, or the dependent
variable for a regression problem.
As an example, we can use Haberman’s Survival Data Set , which you can download from the UCI ML repository. This dataset “contains cases from a study conducted on the survival of patients who had undergone surgery for breast cancer”. The data comes in a comma-separated file, where the first 3 columns are the features and last column is the class, and the 4th column indicates whether the patient survived 5 years or longer (label 1), or died within 5 years (label 2). You can check the UCI page for more information on the data.
We can load the data as a DataSet[String]
first:
We can now transform the data into a DataSet[LabeledVector]
. This will allow us to use the
dataset with the FlinkML classification algorithms. We know that the 4th element of the dataset
is the class label, and the rest are features, so we can build LabeledVector
elements like this:
We can then use this data to train a learner. We will however use another dataset to exemplify building a learner; that will allow us to show how we can import other dataset formats.
LibSVM files
A common format for ML datasets is the LibSVM format and a number of datasets using that format can be
found in the LibSVM datasets website. FlinkML provides utilities for loading
datasets using the LibSVM format through the readLibSVM
function available through the MLUtils
object.
You can also save datasets in the LibSVM format using the writeLibSVM
function.
Let’s import the svmguide1 dataset. You can download the
training set here
and the test set here.
This is an astroparticle binary classification dataset, used by Hsu et al. [3] in their
practical Support Vector Machine (SVM) guide. It contains 4 numerical features, and the class label.
We can simply import the dataset using:
This gives us two DataSet
objects that we will use in the following section to
create a classifier.
After importing the training and test dataset, they need to be prepared for the classification.
Since Flink SVM only supports threshold binary values of +1.0
and -1.0
, a conversion is
needed after loading the LibSVM dataset because it is labelled using 1
s and 0
s.
A conversion can be done using a simple normalizer mapping function:
Once we have converted the dataset we can train a Predictor
such as a linear SVM classifier.
We can set a number of parameters for the classifier. Here we set the Blocks
parameter,
which is used to split the input by the underlying CoCoA algorithm [2] uses. The
regularization parameter determines the amount of $l_2$ regularization applied, which is used
to avoid overfitting. The step size determines the contribution of the weight vector updates to
the next weight vector value. This parameter sets the initial step size.
We can now make predictions on the test set, and use the evaluate
function to create (truth, prediction) pairs.
Next we will see how we can pre-process our data, and use the ML pipelines capabilities of FlinkML.
A pre-processing step that is often encouraged [3] when using SVM classification is scaling
the input features to the [0, 1] range, in order to avoid features with extreme values
dominating the rest.
FlinkML has a number of Transformers
such as MinMaxScaler
that are used to pre-process data,
and a key feature is the ability to chain Transformers
and Predictors
together. This allows
us to run the same pipeline of transformations and make predictions on the train and test data in
a straight-forward and type-safe manner. You can read more on the pipeline system of FlinkML
in the pipelines documentation.
Let us first create a normalizing transformer for the features in our dataset, and chain it to a new SVM classifier.
We can now use our newly created pipeline to make predictions on the test set. First we call fit again, to train the scaler and the SVM classifier. The data of the test set will then be automatically scaled before being passed on to the SVM to make predictions.
The scaled inputs should give us better prediction performance.
This quickstart guide can act as an introduction to the basic concepts of FlinkML, but there’s a lot more you can do. We recommend going through the FlinkML documentation, and trying out the different algorithms. A very good way to get started is to play around with interesting datasets from the UCI ML repository and the LibSVM datasets. Tackling an interesting problem from a website like Kaggle or DrivenData is also a great way to learn by competing with other data scientists. If you would like to contribute some new algorithms take a look at our contribution guide.
References
[1] Murphy, Kevin P. Machine learning: a probabilistic perspective. MIT press, 2012.
[2] Jaggi, Martin, et al. Communication-efficient distributed dual coordinate ascent. Advances in Neural Information Processing Systems. 2014.
[3] Hsu, Chih-Wei, Chih-Chung Chang, and Chih-Jen Lin. A practical guide to support vector classification. 2003.


Areas of Interest:
Front-End / UX / UI / Design
JavaScript / JS Frameworks
Web Applications / .NET (Core)/ MVC
See My ProjectsGithub Collection.
My portfolio is hosted on github. Most of these projects were completed through the Tech Academy Bootcamp in Portland OR. I created a variety of small applications in Python and C# that can be downloaded and run through the command line. More information can be read from the readmes.
This repository contains the code for this website. This single page application is built using a Bootstrap CSS theme connected to a few javascript components.
Current Company: Margulis Jewelerswww.margulis.com
Margulis Jewelers is a small, independent jeweler located at the heart of downtown Portland, OR. They have been in business since 1932 and boast creative excellence and professionalism. In mid August 2016, I released the first version of their website I was asked to recreate.
For this project, I had to start anew. I decided to use Wordpress as my CMS, since I am passing on the website administration services when leaving the company. I also chose new hosting services, and a theme (Xtheme). From working on this project I learned how to work in a small company, how to use wordpress, how to choose the right plugins, how to keep the company's vision in mind when designing, and so much more.. I've mostly gained skills in CSS and Wordpress.
These two frames are live versions of margulis.com before and after I was asked to recreate it. The new website is fully responsive, resize your browser window to see! For a better experience, visit www.margulis.com directly.
Current Projects & Learning.


Artworks • Visual Design • Code
I’m a Front-End software developer currently working on Web apps using Angular, NodeJS, JavaScript and Docker.
I also have a very basic User Experience skill set which I am actively building upon.
I spend a lot of my life being visually creative, and strive to bring those skills into my daily work.


|
libQuat
|
Classes | |
| struct | vec_3d_ |
Typedefs | |
| typedef struct vec_3d_ | vec_3d |
Functions | |
| LIBQUAT_DLL_EXPORTED float | dot_prod (const vec_3d *a, const vec_3d *b) |
| LIBQUAT_DLL_EXPORTED vec_3d | vector_sub (const vec_3d *a, const vec_3d *b) |
| LIBQUAT_DLL_EXPORTED vec_3d | vector_add (const vec_3d *a, const vec_3d *b) |
| LIBQUAT_DLL_EXPORTED vec_3d | vector_prod (const vec_3d *a, const vec_3d *b) |
| LIBQUAT_DLL_EXPORTED LIBQUAT_DLL_EXPORTED const char * | print_vector (const vec_3d *a, const char *name) |
| LIBQUAT_DLL_EXPORTED float | vector_norm (const vec_3d *a) |
| LIBQUAT_DLL_EXPORTED vec_3d | unit_vec (const vec_3d *a) |
| LIBQUAT_DLL_EXPORTED mat_3x3 | get_cross_matrix (const vec_3d *a) |
| LIBQUAT_DLL_EXPORTED vec_3d | operator- (const vec_3d &a, const vec_3d &b) |
| LIBQUAT_DLL_EXPORTED vec_3d | operator- (const vec_3d &a) |
| LIBQUAT_DLL_EXPORTED vec_3d | operator+ (const vec_3d &a, const vec_3d &b) |
| LIBQUAT_DLL_EXPORTED float | operator* (const vec_3d &a, const vec_3d &b) |
| LIBQUAT_DLL_EXPORTED vec_3d | operator* (const float a, const vec_3d &b) |
| LIBQUAT_DLL_EXPORTED vec_3d | operator* (const vec_3d &a, const float b) |
| LIBQUAT_DLL_EXPORTED vec_3d | operator/ (const vec_3d &a, const float b) |
| LIBQUAT_DLL_EXPORTED vec_3d | operator^ (const vec_3d &a, const vec_3d &b) |
| LIBQUAT_DLL_EXPORTED float | operator~ (const vec_3d &a) |
| LIBQUAT_DLL_EXPORTED std::ostream & | operator<< (std::ostream &out, vec_3d const &v) |
| LIBQUAT_DLL_EXPORTED std::ostream & | operator<< (std::ostream &out, quaternion const &v) |
Obtain the dot product of two 3D vectors.
\[ \vec{a}\cdot\vec{b}=a_xb_x + a_yb_y + a_zb_z \]
| [in] | a | first vector |
| [in] | b | second vector |
The cross product of vectors can be represented as a matrix multiplication operation. This function obtains the 3x3
matrix of the cross-product operator from the first vector.
\[\begin{align*} \left(\vec{a}\times\right)\vec{b} &= \tilde{A}_a\vec{b}\\ \tilde{A}_a &= \begin{bmatrix}0&-a_z&a_y\\a_z&0&-a_x\\-a_y&a_x&0\end{bmatrix} \end{align*}\]
| [in] | a | input vector |
3x3
matrix for the cross product operator \(\left(\vec{a}\times\right)\) Scalar multiplication of a 3D vector.
\[ a\cdot\vec{b}=a\cdot b_x\hat{i} + a\cdot b_y \hat{j} + a\cdot b_z\hat{k} \]
| [in] | a | pre-multiplying scalar |
| [in] | b | second vector |
Scalar multiplication of a 3D vector.
\[ \vec{a}\cdot b=a_x\cdot b\hat{i} + a_y\cdot b\hat{j} + a_z\cdot b\hat{k} \]
| [in] | a | first vector |
| [in] | b | post-multiplying scalar |
Obtain the dot product of two 3D vectors.
\[ \vec{a}\cdot\vec{b}=a_xb_x + a_yb_y + a_zb_z \]
| [in] | a | first vector |
| [in] | b | second vector |
Add one vector to another.
\[ \vec{c}=\vec{a}-\vec{b}=\left(a_x-b_x\right)\hat{i}+ \left(a_y-b_y\right)\hat{j}+\left(a_z-b_z\right)\hat{k} \]
| [in] | a | first vector to add |
| [in] | b | second vector to add |
Subtract one vector from another.
\[ \vec{c}=\vec{a}-\vec{b}=\left(a_x-b_x\right)\hat{i}+ \left(a_y-b_y\right)\hat{j}+\left(a_z-b_z\right)\hat{k} \]
| [in] | a | vector to subtract from |
| [in] | b | vector to subtract |
| LIBQUAT_DLL_EXPORTED std::ostream & operator<< | ( | std::ostream & | out, |
| quaternion const & | v | ||
| ) |
operator to print a vec_3d instance.
| out | std::ostream stream to print output to |
| v | vector to print |
| LIBQUAT_DLL_EXPORTED std::ostream & operator<< | ( | std::ostream & | out, |
| vec_3d const & | v | ||
| ) |
operator to print a vec_3d instance.
| out | std::ostream stream to print output to |
| v | vector to print |
Compute the vector product of two 3d vectors.
\[\begin{align*} \vec{a}\times\vec{b} &= \begin{vmatrix} \hat{i} & \hat{j} & \hat{k}\\ a_x & a_y & a_z\\ b_x & b_y & b_z \end{vmatrix}\\ &= \left(a_yb_z-b_ya_z\right)\hat{i} - \left(a_xb_z-b_xa_z\right)\hat{j} + \left(a_xb_y-b_xa_y\right)\hat{k} \end{align*} \]
| [in] | a | first vector \(\vec{a}\) |
| [in] | b | second vector \(\vec{b}\) |
| LIBQUAT_DLL_EXPORTED float operator~ | ( | const vec_3d & | a | ) |
Compute the norm a vector.
\[\lVert\vec{a}\rVert = \sqrt{\vec{a}\cdot\vec{a}} \]
| [in] | a | input vector |
| LIBQUAT_DLL_EXPORTED LIBQUAT_DLL_EXPORTED const char * print_vector | ( | const vec_3d * | a, |
| const char * | name | ||
| ) |
Print formatted vector on stdout.
| [in] | a | vector to print |
| [in] | name | name of the vector |
Obtain unit vector in the same direction as given vector.
\[\hat{a}=\frac{\vec{a}}{\lVert\vec{a}\rVert}\]
| [in] | a | input vector |
Add one vector to another.
\[ \vec{c}=\vec{a}+\vec{b}=\left(a_x+b_x\right)\hat{i}+ \left(a_y+b_y\right)\hat{j}+\left(a_z+b_z\right)\hat{k}\]
| [in] | a | vector to add to |
| [in] | b | vector to add |
| LIBQUAT_DLL_EXPORTED float vector_norm | ( | const vec_3d * | a | ) |
Compute the norm a vector.
\[\lVert\vec{a}\rVert = \sqrt{\vec{a}\cdot\vec{a}} \]
| [in] | a | input vector |
Compute the vector product of two 3d vectors.
\[\begin{align*} \vec{a}\times\vec{b} &= \begin{vmatrix} \hat{i} & \hat{j} & \hat{k}\\ a_x & a_y & a_z\\ b_x & b_y & b_z \end{vmatrix}\\ &= \left(a_yb_z-b_ya_z\right)\hat{i} - \left(a_xb_z-b_xa_z\right)\hat{j} + \left(a_xb_y-b_xa_y\right)\hat{k} \end{align*} \]
| [in] | a | first vector \(\vec{a}\) |
| [in] | b | second vector \(\vec{b}\) |
Subtract one vector from another.
\[ \vec{c}=\vec{a}-\vec{b}=\left(a_x-b_x\right)\hat{i}+ \left(a_y-b_y\right)\hat{j}+\left(a_z-b_z\right)\hat{k}\]
| [in] | a | vector to subtract from |
| [in] | b | vector to subtract |


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Makes 6 buns
Dietary
There is no waiting around for these savoury buns: they prove in the oven. Let the kids choose their own fillings.
In a bowl, mix together the white and wholemeal flours. Add the salt, sugar and yeast and mix again until well combined.
Make a well in the centre of the dry ingredients. Gradually pour the warm water into the centre, bringing the dry ingredients into the pool of water using a fork. Keep stirring until the mixture comes together as a dough. You may not need to use all of the water - try not to allow the dough to become too sticky.
Turn the dough out onto a lightly floured work surface and knead well until smooth and elastic, for about 10 minutes.
Divide the dough into three equal-sized pieces and roll each into a ball. Knead one type of filling into each of the dough balls, so that each dough ball will be a different flavour and the flavours are hidden. Then tear each ball in two to make six buns in total.
Arrange the buns onto a lightly greased baking tray so that they are almost touching. Put the baking tray into a cold oven, then switch on the oven to 230C/450F/Gas 8 and bake the buns for 15-20 minutes, or until they have risen and are golden-brown. Set aside to cool on a wire rack.


species climate change distribution range potential current data velvet areas gecko {border-style future px;} #ffffff;} Ecol protected suitable Australia habitat niche global species’ climatic southeastern temperature used (see area models range-restricted Climate Therefore, expansion habitats lesueurii occurrence study Australia. Change bioclimatic different model species. using (i.e., change. conservation currently environmental example, extent important px; {font-family Biol Phillips Proc Rebaudo Sci Supplementary USA Webb Williams WorldClim climatically conditions especially font-size geckos lizard network precipitation recent reptiles southeast temperatures Acad Additionally, Elith Figure Hughes National Natl Pike Shine Thuiller background changing distributions double; ectotherms future. increase increases management results species, thermal year Araújo Australian Bezeng Current ENMs Evol Hannah Hoffmann However, Huey Science Sinervo University Wisz border-color border-width change, driving encompass endangered extinction high higher major mean mitigation" modeling observed particularly predicted projected projections scenarios shift similar sites small solid; variables vulnerability warming {font-style {font-weight Biogeogr Clim Croak ENM Guisan Model Nature Peterson Predicting Specifically, Table Walther account alter approach artificial bold color courier; datasets dispersal distribution. ecology effects em; employing evaluate gas geographic greenhouse impacts implications indicates likely microclimatic models. nest plant pt;} responses rise rocks spatial specialized study, surface survival tropical true unsuitable van


FEAR A film review by Michael John Legeros Copyright 1996 Michael John Legeros
The Smell of FEAR Stinks
(Uni) Directed by James Foley Written by Christopher Crowe and James Foley Cast Makr Wahlberg, Reese Witherspoon, William Peterson, Alyssa Milano MPAA Rating "R" (presumably for language, violence, gore, and sexual content) Running Time 95 minutes Reviewed at Mission Valley Cinemas, Raleigh, NC (10APR96)
==
This howler of a thriller stars the Artist Formerly Known as Marky Mark as a young psycho who seduces and later terrorizes a 16-year-old high-schooler (Reese Witherspoon). She's a nice girl from a nice family who learns too much too late about her seemingly sane boyfriend. Good afternoon, Mrs. Cleaver. With better casting, director James Foley (GLENGARRY GLEN ROSS) might've had something here. He picked a good pair for the parents-- Amy Brenneman (HEAT) and the always reliable William Petersen-- and that's about as far as he got. Ms. Witherspoon has no screen presence to speak of, while Underwear Boy is a hollow creeper, at best. (And he looks a good ten-years older than his character! Oh, how we could've ended things early if Dad had just spoken up and said "for Christsake, Nicole, he looks like he's thirty!") Completing the terrible triumvirate is Alyssa Milano, wildly overacting as Nichole's slut girlfriend (a.k.a. the Bad Influence). Yes, they're unwatchable, but the story is so mercifully straight-forward that you may find yourself getting caught up in the camp. A surprisingly engaging ending also keeps the film from collapsing on itself. If there's a single redeeming feature to speak of, it's that the story is a virtual primer for teenage girls on how to identify a predator. Of course, they *could* just listen to their dads...
Grade: D+
--
Mike Legeros - Raleigh, NC
<EMAIL_ADDRESS>(h) -<EMAIL_ADDRESS>(w)
Visit me in MOVIE HELL
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


Laura (1944)
Grade: 83
"Laura" is a highly entertaining murder mystery. Well directed and scripted, with several surprise plot twists, it rarely drags, and survives many improbable sequences.
Laura (Gene Tierney) is an attractive, successful young woman who has been murdered. The primary suspects are her suitors: conceited, sneering columnist Clifton WebbX and opportunistic ladies man Vincent Price. Dana Andrews plays the police detective who becomes obsessed with solving the case. Further complicating matters, Price has two other girlfriends, and, well... better not say anymore!
After seeing Price ham it up in endless horror movies, he appears miscast playing a hearthrob. It must be remembered that audiences in 1944 had never seen him in any of those movies. Still, with unmistakable affected voice and manner, it is difficult to believe two lovely models and a wealthy spinster would be falling all over him, despite their better judgement.
Clifton Webb's character is the most interesting. Considered a great wit, he is in fact insecure and frail. He is fixated with keeping Tierney as a potential girlfriend, never admitting to himself that he is too old for her and she will sooner or later take someone else. Still, he hangs about her, shooing off paramours, and if one lingers, pries into his affairs for dirt to prove him unworthy of her. All his fame and success means nothing to him, and he will throw it all away if he can't have her. He gets more screen time than anyone, but only has third billing. I guess movie audiences would rather see Tierney and Andrews, who are more physically attractive.
There are many silly moments in "Laura". In no manner should this movie's plot be compared with an actual murder investigation. But if the characters don't behave like real people would in their situations, they do behave consistently. And they are all very entertaining.
http://members.tripod.com/~Brian_Koller/movies.html
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


so i had to reboot again and forgot to power down my nodes first
of course now my kwd is -"crazy number"
are there any tools at all i can use to correct the numbers in the timeseries files?
basicly i just need to add a value from the where the data goes negative...
Re: rebooted and now data is screwed (timeseries)
i would also like to convert to mysql so i can edit more easy in the future....
i know there is a fix to ntpd but i would like to be able to edit the data also
Re: rebooted and now data is screwed (timeseries)
damm my water feed is screwed.... it starts at 1970... and only one datapoint today....
given that i run off a harddrive and dont care about the wear are there an easy to follow way to convert from timeseries to mysql?
Re: rebooted and now data is screwed (timeseries)
Hello Boelle, Whats the size of the datafile for the feed? You could write a script to convert the feed to mysql, there's information on the format of the feeds here: https://github.com/openenergymonitor/documentation/tree/master/BuildingB... that might help
Re: rebooted and now data is screwed (timeseries)
upps... each feed have grown to 6mb.... have about 12 of them but only 2 of them are gone bad
what i could live with is if i could add a value to all datapoints after a given point where the 1970 issue causes them to go negative
but really a guide on how to convert to mysql would be awesome... i know you like to promote low write version but i'm running the full version, i just miss mysql from the setup
EDIT: Powered by openenergymonitor.org | v8.3.6
EDIT2: would adding MysqlTimeSeries.php to the place add mysql back as feedengine?
if so yes what is the right folder? are there any other settings i would have to change? i see in some documentation that settings.php needs a change to say use mysql as default engine... but there is no line at all with default engine in the first place
Re: rebooted and now data is screwed (timeseries)
Sorry I can't help you with the feed conversion, but rather than finding a way to easily "correct" the effects of something that shouldn't of happened and could still reoccur again at anytime may not be the best way forward.
If you are running on a hdd there is no reason to use the low-write SD card, Trystan "promotes" the low-write version as a solution for users that want to run on an SD card which is not ideal and has weaknesses and therefore workarounds. You should not be troubled by the issues caused by the workarounds if you do not have the situation they "workaround".
However if you do wish to run the read-only image there is a fix for the cause of the "1970" issue as previously discussed (http://openenergymonitor.org/emon/node/5961)
There are times when you need to reboot in a controlled way and providing you remember to do certain things you may be ok, but power grid outages, tripped circuit breakers etc are all real life scenarios that your setup should be able to cope with without corrupting your data.
Paul
Re: rebooted and now data is screwed (timeseries)
i do not use the low write.. i run the full version....
and yes power out can happen....
that is why i want mysql back so i can correct data if they get in the system the wrong way... it must be possible..
just getting mysql back is one thing... then i can always wait and convert the data
EDIT: btw... i'm setting up a new pi to work as a NTP server... maybe i should really use that one for emoncms and start from fresh and transfer the data... just so everyone know what i run etc.... ????
Re: rebooted and now data is screwed (timeseries)
You may be running the master branch (full version) of emoncms but the 1970 issue only occurs due to the changes made to the SD image to make it read-only. If you install the read-only image to a hdd it it still has all the read-only characteristics despite changing the emoncms branch.
I assume you mean "with a NTP server"? which is exactly what your existing Pi is doing, but during boot up until a NTP server is contactable the "stored time" is used and because of the location of that "stored time" on the read-only image it is not accessible and therefore resets to "0" until an NTP server is contact able. Adding another NTP server will have no effect during boot up.
I think that could be a wise choice. if you want the full version on a hdd use a standard raspbian image and not the read-only SD image.
Paul
Re: rebooted and now data is screwed (timeseries)
I assume you mean "with a NTP server"?
No as an NTP server... i will attach a GPS module to it via I2C bus with an active antenna outside
But the magic Q.... does the full version have mysql in there as feedengine? oh well i guess i will ask how and all that stuff when i get to it... now i just need to make sure that it starts networking an NTP as the first thing before anything else.
Re: rebooted and now data is screwed (timeseries)
Interesting project, this will give you very accurate timekeeping whenever the internet is unavailable (as long as it's not too cloudy) but just to be clear, I hope you are not doing it for the wrong reasons, it will not resolve the "1970" issue! The ethernet, wi-fi and I²C are not immediately available when the Pi is started, When the "1970" issue occurs the Pi isn't even ready enough to follow a symlink to another partition which is why the problem occurs.
Just as I hope you are not trying to use SQL for the wrong reasons, some users prefer to use SQL for a specific reason, but putting right errors that are easily prevented isn't usually one of them. You can by all means use SQL if you prefer, but the OEM project is moving away from SQL for recording mainstream data and any new development may not include SQL.
Re: rebooted and now data is screwed (timeseries)
that is one of the reasons for setting up the NTP server part... but i will also join pool.ntp.org so others can make easy use of it.
i might connect the GPS via an usb-serial cable, not sure yet but the module have both options.
right now i'm trying to figure how to use the ntp-wait command so time can be set at boot before logging starts...
my reasons for SQL are so that i can edit the data and export them easy etc... if i can just get it in now i'm happy... the current emoncms is ok for me so dont need updates after its running.
excluding sql.. well ok but it that is like dictating people what to use... it would have been ok with me if it was there but not updated... but removing it completely without keeping the version that has SQL would push me away...
but i guess i would always try and extract the stuff in the sd card version that has SQL... (or did the older sd card version not run on sql exclusive?)
EDIT: my major reason for SQL is simple that its what i feel most comfortable with. It allows me to do stuff with the data. and i can find many more examples on how to change/manipulate the data with SQL than with any other system... also another reason is that i should have the choice what feedengine to use... my thought is why not just leave it in there and let the user decide?
Re: rebooted and now data is screwed (timeseries)
It will still not be available during the Pi's initial boot sequence.
I think you will find that this will just delay starting emoncms and/or emonhub (depending on if and how you configure it) the Pi will still boot up with a 1970 timestamp until the NTP is available. You are not changing how it starts up but when it fully starts up.
Seems a little extreme, All this software is made open-source so that you can do what you want with it... for free! The developers will do what they do in the interest of the project and the majority of users, if you want something different. no problem, there's loads of info and help on hand for you to achieve that.
I have not suggested that SQL will excluded or even not supported, nor am I promoting any particular data engine, I have merely explained that the OEM project has it's own data engines and any future development will most likely be for it's own data engines and not necessarily guaranteed to be compatible with SQL..
Re: rebooted and now data is screwed (timeseries)
oki doki... but then might i ask how i can make sure network is up before it does anything else...
and remember i'm not an expoert... i'm a noob... i have googled far for this, been on irc chats... no where i can find a step by step guide on how to change boot order so that i'm sure that i load network first and then ntp next... and then we can start thinkering about loading emoncms stuff
Re: rebooted and now data is screwed (timeseries)
You can't, well not easily anyway. You are straying into rewriting the raspbian OS. The Pi doesn't have a clock, so it is designed to get an approximate time from the file system just for the purpose of getting up and running, it doesn't care what the time value is. it just needs a time reference point to count from so it can boot up, which is why it's ok with 0 (1970) it just counts from there.
Without this timekeeping it won't load any modules or drivers etc, it will never get a network connection or look for a NTP signal or start any software.
Most of the time we (OEM'ers) keep the Pi's running 24/7 and the only time the Pi is not running is momentarily during a reboot, when it boots back up it uses the time last saved as an approximate time to allow it to start the services it needs to correct the time.
This correction normally occurs pretty soon after starting the Pi as we normally have a permanent internet connection.
So the time is slightly wrong for a very short period of time and no-one has a problem.
If you do not have a network connection (or RTC or GPS) available when NTP tries to update it will continue to use the slightly wrong time it got from file (I guess you can use ntp-wait here until the time is corrected)
If the Pi was powered down for a week, the "missing time" would be significant enough for the use of ntp-wait or a RTC because the temporary time would be 1 week out. but as we don't switch our Pi's off this is unlikely to happen.
However! since the "SD image" is read-only one of 2 things happens, either the time cannot be saved to file because it's read-only and the "temporary time" is the last time the partition was mounted as writeable (rpi-rw) possibly the install date, Or if the "saved time" moved to a separate partition so it was writable, then at boot time the partition containing the saved file will not be accessible via the symlink and that will result in a temporary timestamp of "0".
Bottom line is "stock" raspbian is built to cope with this and is only a problem if your pi is dormont for a long time or has no internet connection and if you need to run read-only then "ntp-backup" allows the current time to be saved to the original "accessible at boot time" location despite being read-only.
So if you use standard raspbian - no issue, if you use read-only raspbian with ntp-backup installed - no problem .But anything else (raspbian) - problems can and probably will occur.
That's all ! the Pi just needs a relatively recent time for the moments before the network is available. this isn't a ntp, wifi, network emonhub emoncms or raspbian thing it's a raspberry pi thing.
Paul
Re: rebooted and now data is screwed (timeseries)
i have thought about it a bit... also i have other plans for the same pi...
first thought is to not start emonhub like normal, but via s scrip check if time seems ok, and then if time is say somewhere past 1/1-2015 i start emonhub
does that sound more like a plan?
my other plan for the same pi is to run it as a stratum1 ntp server, i'm allready wireing up a gps module to a usb-serial cable... but that is a side project...
EDIT: so far on this 2nd pi i have to play with i'm running the standard image... so i guess the 1970 issues is more less a problem anyway... but still a bit of sanity check does not hurt i guess and i can always check the ok date as the month's passes... but if i should have a as full version of emoncms what guide is the best one? there are a few and i have always been confused as wich one to follow. still i would like to add sql to the setup... once i first get it going i dont plan to upgrade anyway...
by standard image i mean the one from ras pi org and after booting that image i used this guide to more or less reduce whats on there to the minimum http://www.cnx-software.com/2012/07/31/84-mb-minimal-raspbian-armhf-image-for-raspberry-pi/
on http://openenergymonitor.org/emon/node/9998 you point to http://openenergymonitor.org/emon/node/5092... it just says to put the image on both SD and HDD... but what image? the one from ras pi org ? other wise i can follow the guide ok.. i guess i only need to go down as far in the first post that the serial port is made free for radio module? after that i go to https://github.com/emoncms/emoncms/blob/master/docs/LinuxInstall.md to install the full version of emoncms?
Re: rebooted and now data is screwed (timeseries)
WHY ??????
The standard raspbian image wll save the time once every hour, how can you possibly confirm if that is working by checking if the time is "this year".
Why are you trying to fix something that is not broken? It works perfectly well! Just install it and use it, don't try and change it, that's what creates the problems.
If you have a need that demands a change that's another thing eg if you want read-only (which you don't) then install ntp-backup. but if you do not need to change it why on earth would you change something that works, for no apparent reason?
yes the latest raspbian image
But Why ? I can only echo what I've already said about unnecessary changes, the 1st paragraph from that article reads
It's not embedded, it's not on a sd card, you're not short of space if using a hdd and there is no cost ! this article was written 30mths ago and raspbian has been revised several times since then, plus numerous updates. What do you have to gain? You can potentially cause yourself numerous headaches to save a few Mb it doesn't make sense!
The article may be very good if you need a minimal install, I'm not judging the article, but you do not need a minimal install.
You only cross a road if you need to get to the other side, getting knocked down is always a possibility and a chance you may choose to take, but if you get knocked down when you didn't need to cross, that's foolish!
Here are the links given to another user todayhttp://openenergymonitor.org/emon/node/9998 regards installing emoncms on a hdd. You can and probably will, do something completely different, which is fine as long as when you do choose to do something differently you are prepared for different results.
Re: rebooted and now data is screwed (timeseries)
Short Answer as i'm about to go out the door...

I might remove stuff that is needed later on... but then i will just have to add that when time comes.
My thoughts on waiting starting up Emonhub are the simple ones that i wanted to be more than 100% sure we got the correct time before we start logging... given that i will not reboot this very often i would not mind waiting 1-5 mins after reboot before logging starts..
anyone have to go for an job interview... have loaded fresh image and created a google doc so i know what i have done and dont get lost so to speak, link is just for ref if i ask for more help and you want to know what i have done: https://docs.google.com/document/d/1iOM2_-0SlzrL6oO1bNJmoOx-B8EIwXAy5zZJVlqMlos/edit#
Re: rebooted and now data is screwed (timeseries)
Finally came arround to install emoncms on my new pi, with new job starting at 5am there has not been much time during the day to do anything.
but i did manage to get a Stratum1 time server going on it, a voice chat server etc... look at google doc link above
now following this guide: https://github.com/emoncms/emoncms/blob/master/docs/LinuxInstall.md
will update this one as i get along
EDIT: Q... what is redis used for?
Re: rebooted and now data is screwed (timeseries)
getting along... now some more Q's:
1) will adding MysqlTimeSeries.php from https://github.com/emoncms/emoncms/tree/master/Modules/feed/engine give me mysql as a feedengine option?
2) how do i transfer data from one pi to the other?
3) can i do 2) even if data formats are not the same or does it take some extra work?
Re: rebooted and now data is screwed (timeseries)
think i can answer 1)... please confirm me:
got it from here: http://openenergymonitor.org/emon/node/5744
'Modules/input/process_model.php' needs to be edited (add 'ENGINE::MYSQL' to '$list[1] = array(_("Log to feed").....' ).
Modules/input/Views/input_view.php' the same change needs to be done.
Under '<span class="add-on feed-engine-lable">Feed engine: </span>', the new option for MYSQL needs to be added as follows '<option value=0 >MySQL TimeSeries (MYSQL)</option>'.
what i'm not quite sure of is if it should be option 1 or 0... mysql is the first on the list... and fiwa i know is no 6... so if i count 0...1...2 fiwa becomes no 6... so yess my logic says it has to be 0
so what i did was these 2 changes... transfered the mysql from the live pi to get dashboard etc over...
now of course there was some bogus nodes in there and i took one of them just fo create a feed as test... yep the feed shows up in phpmyadmin... 2 colloums... time and date... so far so good right?
----------------------------
now i could just move the expansion board and create feeds to see it works.... but how do i get my old data converted? from phptimeseries to mysql.... can i ask the live pi upload to emoncms.org but spec my 2nd pi i'm building on? or will that just transfer the data in same format?
i found out that i need to recreate the MYI and frm files... any one knows how to do that? are the MYD files simply time and data pairs?
Re: rebooted and now data is screwed (timeseries)
i know this is semi bumping but... if anyone have knowledge on how to convert the phptimeseries to real mysql then please let me know
EDIT:
could it be that its possible to export to csv on the old pi and import in to mysql on the new one?
only trouble i found is that i can only use log to feed with mysql... i cant use it if i want to do power to kwh to convert my watt's to kwh... i can do that with phptimeseries thou... is this just a file i need to change?
EDIT2: Figured that i could do an CSV export from the old pi and import the data on to the new pi, almost at the finish line... now i just need to be able to use mysql for the processing... most important to me is Power to kwh and accumulator
EDIT3: to overcome the issue that i cant use power to kwh i figured i could use the number of pulses from the electricity meter and just multiply it. my meter flashes 10000 for each kwh so i thought multiply the number of flashes by 0.0001. for some strange reason this does not work, the value comes out as a flat 0 and not 0.0007 for 7 flashes... how can that be?
Re: rebooted and now data is screwed (timeseries)
If you are seeing "0.00" on the inputs or feeds pages the chances are the value is correct (0.0007) but is rounded when displayed. to test this create another feed "x1000test" an see if multiplying the "0.00" by 1000 is 0.00 or 0.70.
Paul
Re: rebooted and now data is screwed (timeseries)
will do, but planned power out in 15 min
utility comp is doing maintaince on high tension part of grid
any idea why i cant use power to kwh and accumulator when i use mysql as feed engine?
Anti Bump EDIT: that worked... with 11 flashes between each reading i got a feed value of 1.10 when i multiplied by 1000.... now to check what mysql says about the 2 feeds....
BTW.... HUraaaaay email notification works :-D
EDIT2: yep... mysql says 0.0011 kwh every 4 sec... i guess i can live with that... but how precise is that compared to use power to kwh processin? better or worse?
EDIT3: csv export from old pi worked somewhat... on the old pi i enter emoncms and take my watt feed... i know i have data from 11 nov so i pick that as start date and yesterday as end date... but it complains about max size... i then do one month at a time but i get lines that look like this:
1417635073 902.00
1417635080 1 074.00
1417635086 1 071.00
1417635093 1 087.00
1417635098 918.00
also each of the 3 files i end up with end in this:
<br />
<b>Fatal error</b>: Maximum execution time of 30 seconds exceeded in <b>/var/www/emoncms/Modules/feed/engine/PHPTimeSeries.php</b> on line <b>248</b><br />
is this a fault?
Re: rebooted and now data is screwed (timeseries)
I'm guessing the "comma separated variables" are being incorrectly read because of a "thousands separator".
Re: rebooted and now data is screwed (timeseries)
hehe,,, the direct output from the emoncms cvs export, opened in notepad, also the error at the end of the files troubles me... are there other ways i could transfer the data maybe?
Re: rebooted and now data is screwed (timeseries)
If you open the csv files in a spreadsheet eg excel you should be able to easily alter the files you have already downloaded. by concatenating columns B and C into a new column D, then copy and "special paste values" in column D, delete B & C before saving.
Re: rebooted and now data is screwed (timeseries)
the problem is that the csv export is not complete... it ends with
<br />
<b>Fatal error</b>: Maximum execution time of 30 seconds exceeded in <b>/var/www/emoncms/Modules/feed/engine/PHPTimeSeries.php</b> on line <b>248</b><br />
last thing i checked before bed time last night was how much data i actually got out... and even if i picked a full month i only got a few hours...
the old database said 6mb and the csv was a bit below 200kb
EDIT: Fixed the data issue... i copied over the feed files from the old pi to the new one... then i took one of the frm and MYI files allready there since i opted to use MYSQL.. and then ran
chown -R mysql:mysql on the 3 files... now the old feed shows up in my sql and i can export them from mysql and import them again... i guess there is a smarter way to tell it to move the data but well my thought will work at least
EDIT2: that did not work so well, but export to csv and import in to the new feed does work flawless, teh bigger the file the more timeouts thou...
EDIT3: a way arround the timeout thing.. simply increase the idle time in phpmyadmin to 5 hours before a new login is needed, and processsion time to the same... one month worth of data can be done in about 3 hours if interval is 4 sec.
left is only to figure why i cant pick power to kwh and accumulator when i pick mysql. the first i use for convert watt to kwh but i can live with processing the flashes from the meter.
but the last one i use to log my water usage.... have to test if i reliable can store the number of pulses there too
Re: rebooted and now data is screwed (timeseries)
got it up and running... only 2 issues left....
still power to kwh and accumulator are not an option when i use mysql.... can i change that somehow?
Re: rebooted and now data is screwed (timeseries)
anyone that can tell my why power to kwh and accumulator is not an option when i pick mysql as feed engine?
could i change a file or 2 to get them as options with mysql?
Re: rebooted and now data is screwed (timeseries)
no one knows?