Ask questions about the core tech here, but not questions about prices or personal questions or GUI and please don't DM JL777.
https://dexstats.info/richlistlookup.php?address=RLVzC4tr9cNKvuw2z4m8KuMfZURwCehx55
https://medium.com/@jameslee777
100 messages
Before 05-Dec-19 12:00 AM
mrlynch08-Aug-19 08:51 AM
yes, 2 min
jl777c08-Aug-19 08:51 AM
so if both keys are compromised, it doesnt help
hyperDEX08-Aug-19 08:51 AM
mrlynch08-Aug-19 08:51 AM
that's how i understood from the doc
jl777c08-Aug-19 08:52 AM
then just multisig with physical keys does seem better
hyperDEX08-Aug-19 08:52 AM
I have the yubikey 2fa for my laptop, so convenient. Maybe we just need a good GUI for a way to setup multisig with that
the trick is to pregenerate signed transactions with a onetime use privkey that you never save. since you never save it, it cant be compromised and the only thing that can happen is that you either broadcast this transaction, or you dont
mrlynch08-Aug-19 09:31 AM
and store the presigned transactions should one ever need it i guess, no?!
jl777c08-Aug-19 09:31 AM
the rest is just standard if/else scripting, but checksequenceverify is needed, which our codebase doesnt have as that came in 0.12
yes, you hang onto the presigned tx as if it was a privkey
it is the only way you can bypass the normal spend using the hot-wallet privkey
with this, i dont think there is need for multisig or the doomsday scenarios, just create the simple vault logic. a bit tricky as the vault reclaim needs to spend back to a new vault
it seems like a couple weeks of fiddling with bitcoin script
mrlynch08-Aug-19 09:35 AM
can the presigned tx be stored on-chain or even in wallet.dat? even if the attacker has access to that it would be detrimental to use it therefore one can use a compromised private key to retrieve the presigned tx
no?!
jl777c08-Aug-19 09:36 AM
yes, store it in wallet.dat, or maybe encrypted on the blockchain
if using the hot-wallet privkey as the encryption key, then yes it wont do the attacker any good to broadcast it
mrlynch08-Aug-19 09:37 AM
yes that is what i was refering to - the hot wallet key
thank you!
jl777c08-Aug-19 09:41 AM
the recursive part is basically iterating from the last one all the way back to the first one, so there would be N different revocation presigned tx, one for each iteration
the hope i guess is that the thief will stop trying to steal it if it keeps going back into the vault
a MUCH simpler way is just to make the presigned transaction go directly to a very cold wallet address
then just need to generate one set, none of this recursion complexity, no need for multisig. just generate the temp keypair, create a tx that spends to that address (as one of the possible spend conditions in an if/elif/else p2sh script), sign the tx, throw away the key
something like that. not 100% right but close enough i think to be able to debug once its put together
mrlynch08-Aug-19 09:45 AM
i'll start fiddling once i put my gear back together unless this is urgent and someone else can do it
jl777c08-Aug-19 09:45 AM
i dont think the bitcoin guys will get it done this year
it is a dapp that creates tx
hyperDEX08-Aug-19 09:51 AM
I dont understand, why would it not do the attacker any goodto have the presigned tx info?
jl777c08-Aug-19 09:52 AM
because the presigned info just spends to the new vault (or separate cold storage address)
mrlynch08-Aug-19 09:52 AM
because the presigned tx reverses whatever they do
jl777c08-Aug-19 09:54 AM
constructing the if/else p2sh script is the critical aspect of this. i think if all the paths it can go to are known, it can be done. one detail is how to make sure the hotwallet pubkey cant spend for X number of blocks after the release tx is spent. just too tired to think clear about this, but i am sure there must be a way
hyperDEX08-Aug-19 09:56 AM
Oh so you mean the presigned tx goes back to the vault and it will veto any spend directly from the privatekey?
jl777c08-Aug-19 09:56 AM
yes
to the vault or to a extremely secure cold address to simplify the never ending chain and avoid the attacker having multiple chances
but this means the hotwallet is not very hot at all
hyperDEX08-Aug-19 09:56 AM
Ah ok makes sense
But it also requires the user to act
Would it not be better to act to approve it?
jl777c08-Aug-19 09:57 AM
not sure how practical it is to wait a day before you can spend from your hotwallet
hyperDEX08-Aug-19 09:57 AM
But then it is just multisig
jl777c08-Aug-19 09:57 AM
it seems a simple multisig is a better way
hyperDEX08-Aug-19 09:57 AM
yeah LOL
mrlynch08-Aug-19 09:59 AM
i believe the use case is to store large amounts with an added layer of security/peace of mind
jl777c08-Aug-19 09:59 AM
this is more for lukewarm "cold wallets"
mrlynch08-Aug-19 10:00 AM
but yes, multisig using 3 or 4 physical keys does sound more secure
Approximately 5 hours ago there was a large-scale dusting attack on $LTC @Litecoin users.
One of many transactions: https://t.co/zgk9gPRNcU
Here's what you need to know and how to protect yourself:
https://t.co/KNVoQLwBUb
Likes
196
@jl777c is there anyway to stop things like this?
jl777c10-Aug-19 08:45 AM
PIRATE
4
any chain with taddr can be dust attacked
Markus10-Aug-19 01:55 PM
@jl777c JL when KMD OS? I believe we need a new open source OS with privacy features and with atomic dex as standard included in the OS
VerusCoin Pool and Electrum Setup Instructions. Contribute to VerusCoin/VerusServicesSetup development by creating an account on GitHub.
Slyris10-Aug-19 06:09 PM
My idea is to create an easily configurable game framework in modern C++ around CC. The idea would be to make modules of various difficulties such as graphic modules, scripting modules but also more advanced modules as an economic model for a game. I would really like to create a small mmorpg in 2d where the economy would be through mining that would bring money into the wallet of players. Assuming I do not want a maximum amount of tokens at the start. But rather an ecological cycle where each month we can mine up to a maximum amount of token. (Knowing that the mining in game would be literally stoned for a given time) the game could renew its resources every month. I think it could make a game rather interesting and fun. @jl777c
It's just a few ideas, but it could be funny.
But on the assumption that these tokens are real and have addresses it could also have a real value in the cryptos market.
I have always found the economic model of video games today not very interesting, I would really like to propose an innovative solution and especially for the players
With the traceability of the currency, can even imagine a model where the bots would be easily detectable
Sometimes people are discouraged when they come on a video game and the economic model is to take out their credit card and buy on third party sites
In this model, players create the game economy themselves at the work of their clicks
In the same idea I think the possibility of the blockchain to have unique transactions, the very possibility of having items via transactions, all that gives me a lot of ideas
I think sometimes when I have an hour or two I would look at a project like this, proposed a very customizable module of a real economy (fair) for a video game.
jl777c10-Aug-19 06:21 PM
the rogue CC locked all the premine into a CC address
then as players found in game gold, when they came out of the game they would get the corresponding coins
all this is not only possible, it was already done
we also now have the possibility of making it a DAO
Slyris10-Aug-19 06:22 PM
you mean kind of database
jl777c10-Aug-19 06:22 PM
so some percentage of the coin supply at regular intervals can be sent out to all players in proportion to the coins they have
each coin becomes like a share
all the data is onchain
Slyris10-Aug-19 06:23 PM
Yeah
jl777c10-Aug-19 06:23 PM
all verified, so no creation of fake data files
Slyris10-Aug-19 06:23 PM
But imagine we are an external video game
We want to integrate easyli an economy for our game
we will look around CC
to totally place the whole economy on the blockchain
with a fair system
It's need to be easy to integrate
like literally few clicks to define what they want
jl777c10-Aug-19 06:24 PM
i dont have the context to know how to easily integrate,but can help with the onchain side
Slyris10-Aug-19 06:25 PM
Because i know we have everything to achieve this kind of project, but this is not so obvious right now
What i want is something that we can directly ping mmorpg company and say look we have a battle ready module that can interest you
jl777c10-Aug-19 06:27 PM
ok, i like the plan
Slyris10-Aug-19 06:29 PM
Today the big problem of the companies that make mmorpg is that their economy (of the game) is infested with bots and resellers third, they do not have the security of the blockchain sometimes they have duplication of items , they are forced to rollbacks, it's hell.
Here we come, and literally have a configurable solution that solves all these problems. I even think that many companies would pay for this kind of solution.
We just have to offer something that integrates as well on mobile, as on pc, on consoles, something very simple and not intruisive
It's really disruptive, on the one hand a company can very well say why we would go on an economic model that would prevent us from having fiat money, but on the other hand it can seduce a lot of players for the security that it offers and nothing would prevent a company from getting money with fees on every block mined in game.
On the one hand the security of not having all the problems mentioned above (so finally a more solid game), on the other hand we lose all the security, but we have an economic model based on fiat money.
jl777c10-Aug-19 06:33 PM
the other aspect is that the game company can keep 10% of the premine for themselves and just lock 90%


Range: 0 (no blur) to N (blur radius in pixels)
Range: -1 (darken) to 1 (lighten)
Range: -1 (reduce contrast) to 1 (increase contrast)
Flip input as mirror image
Resize input height
Range: 0 (no change) to 360 (hue rotation in degrees)
Image kodachrome colors
Image negative
Range: 0 (no pixelate) to N (number of pixels to pixelate)
Image polaroid camera effect
Return processed canvas imagedata in result
Range: -1 (reduce saturation) to 1 (increase saturation)
Image sepia colors
Range: 0 (no sharpening) to 1 (maximum sharpening)
Image technicolor colors
Image vintage colors
Resize input width
Run input through image filters before inference


balance: Visualize Balances of Compositional Data
Balances have become a cornerstone of compositional data analysis. However,
conceptualizing balances is difficult, especially for high-dimensional data. Most often,
investigators visualize balances with "balance dendrograms". However, this visualization
tool does not scale well for large data. This package provides an alternative scheme for
visualizing balances, described in [Quinn (2018) <doi:10.12688/f1000research.15858.1>].
This package also provides a method for principal balance analysis.
| Version: |
0.1.9 |
| Depends: |
R (≥ 3.2.2) |
| Imports: |
methods, ggplot2, grid |
| Suggests: |
ape, ggthemes, knitr, philr, propr, reshape2, rmarkdown, robCompositions, testthat |
| Published: |
2018-12-10 |
| Author: |
Thomas Quinn [aut, cre] |
| Maintainer: |
Thomas Quinn <contacttomquinn at gmail.com> |
| BugReports: |
http://github.com/tpq/balance/issues |
| License: |
GPL-2 |
| URL: |
http://github.com/tpq/balance |
| NeedsCompilation: |
no |
| Citation: |
balance citation info |
| Materials: |
README NEWS |
| CRAN checks: |
balance results |
Downloads:
Reverse dependencies:
Linking:
Please use the canonical form
https://CRAN.R-project.org/package=balance
to link to this page.


Appropriately maintain standards compliant total linkage with cutting-edge action items. Enthusiastically create seamless synergy rather than excellent value. Quickly promote premium strategic theme areas vis-a-vis.
Appropriately maintain standards compliant total linkage with cutting-edge action items. Enthusiastically create seamless synergy rather than excellent value.
January 2017 - Present
Intensive part-time software development bootcamp focusing on full stack development fundamentals and problem solving. The final half of the program are executed in a simulated company environment with Scrum methodology.
• Hands on application of OOP fundamentals and SOLID principles through group and individual projects reflecting real world business problems
• Source code version control with Git/GitHub
• Project management/tracking with Trello and Github Projects & Issue Tracking
• JavaScript fundamentals leveraging DRY, modular, readable code and reusable components
• Built single-page applications with HTML, CSS, and JavaScript libraries like jQuery
• Task Automation with Gulp: Linting with JSHint, module bundling with Browserify, SASS compilation
• Styled applications with CSS Frameworks Bootstrap and Materialize and wrote custom styles with SASS
• Deployed applications through Firebase, GitHub Pages, Heroku and Azure
• Leveraged VMware for virtualizing a Windows environment on Mac to utilize Visual Studio 2015 IDE
• Practiced TDD with mocking framework Moq
• Application design through white boarding dependencies and building ERD’s
• Created and modified database design/content using SQL, ADO.NET, Dapper, and Entity Framework with migrations
• Created RESTful APIs with C#/.NET using WebAPI
• Leveraged Razor for creating and editing MVC applications.
August 2005 - Present
As a Sprint Assistant Store Manager, I work in partnership with the Store Manager to create a sales environment that provides an unparalleled customer experience, resulting in loyal customers and successful business outcomes for Sprint and its' shareholders. I serve as a role model for my team, teaching and coaching on the sales floor, empowering others to consistently deliver a successful sales solution. I not only encourage consistent success and learning opportunities but take ownership of my leadership development that enables me to successfully improve individual and store performance. I enjoy the challenges of analyzing individual and team performance against business goals and implementing business improvements strategies. I deliver operational and merchandising excellence in a dynamic environment.
• Partners with Store Manager to lead store team with unparalleled store experience that improves customer loyalty and strengthens the Sprint Brand
• Motivates sales team to meet or exceed key performance objectives that include service and repair metrics, sales and customer satisfaction goals and store compliance/audits
• Provides continuous feedback and coaching to improve individual and store performance
• Delivers operational and merchandising excellence
• Completes all courses in your leadership curriculum path with the required time frames
• Complies with all operational policies and procedures including the Sprint Code of Conduct


--- title: Israel shot 137 date: 2004-05-17T00:00:00.000Z filepathOriginal: photos/IMG0208.jpg filepathThumbnail: photos/IMG0208.thumbnail.jpg filepathPreview: photos/IMG0208.preview.jpg ---
Me with Jacob and Pussy, at their apartment in Givat Shmuel


NAHID HASAN
SEO Specialist | Digital Marketing | Wordpress
I am new here but working offside for multiple clients. Once you hire my services , you will hire me again and again for your future projects. Lets meet !
Services Provided,
Wordpress
SEO Expart
SMM
Article/Blog
Medical Writing
E Book Writing
Proofreading/Editing
E Book Formatting
Technical Writing
Ghost Writing


Input field required
Password must be 5 characters long, you need another {{loginForm.controls['email'].errors.minlength.requiredLength - loginForm.controls['email'].errors.minlength.actualLength}} characters.
Please, enter your true email
Input field required
Password must be 9 characters long, you need another {{loginForm.controls['password'].errors.minlength.requiredLength - loginForm.controls['password'].errors.minlength.actualLength}} characters.
The max password length is 30 characters
Please enter numbers and letters


Checks the fonts for a bold and/or italic font and applies it to the current selection in Microsoft Excel for the Macintosh version 1.5 or earlier. If no appropriate font is available, Microsoft Excel finds the most similar font available and formats the selection using that font. This function is included only for macro compatibility. If you want to change a font to bold or italic, use the FONT.PROPERTIES function.
Syntax
STYLE(bold,italic)
STYLE?(bold,italic)
Related Function
FONT.PROPERTIES Applies a font to the selection
Return to index


Click to get to the end of the story!!
There was once a penguin who was hungry. He searched far and wide for food.

The peguin said,"Have thouest any food kindly dog?"
The dog said, "Yes, but you must give me an egg."
The penguin said, "I'm a guy."
The dog said, "I know the male penguin carries the eggs."
The penguin said, "Fine."
The penguin took out his eggs and "accidentally" made them fall towards a bunch of rocks.
Then he went and collected them and handed the dog an egg.
The dog handed the penguin some fish and said, "Thanks for the egg."
The penguin said, "No problem," then quickly took off. Later the dog tries to eat the egg and realized it was a rock.


About ChromEvol:
Chromosome number is a remarkably dynamic feature of eukaryotic evolution. Chromosome numbers can change by a duplication of the whole genome (a process termed polyploidy), or by single chromosome changes (ascending dysploidy via, e.g., chromosome fission or descending dysploidy via, e.g., chromosome fusion).
Of the various mechanisms of chromosome number change, polyploidy has received significant attention because of the impact such an event may have on the organism.
ChromEvol implements a series of likelihood models for the evolution of chromosome numbers. By comparing the fit of the different models to biological data, it may be possible to gain insight regarding the pathways by which the evolution of chromosome number proceeds. For each model, the program estimates the rates for the possible transitions assumed by the model, infers the set of ancestral chromosome numbers, and estimates the location along the tree for which polyploidy events (and other chromosome number changes) occurred. For further methodological details, see the publications and manual on the Downloads page.
ChromEvol was first introduced in Mayrose et al in 2010. Further options and new evolutionary models were added in Glick & Mayrose in 2014. Version 2.0 is now available for download, along with an external computational pipeline which fascilitates easy ploidy inference.
When citing the chromEvol program, please refer to: Mayrose et al, 2010 and Glick & Mayrose, 2014.
Chromosome number is a remarkably dynamic feature of eukaryotic evolution. Chromosome numbers can change by a duplication of the whole genome (a process termed polyploidy), or by single chromosome changes (ascending dysploidy via, e.g., chromosome fission or descending dysploidy via, e.g., chromosome fusion).
Of the various mechanisms of chromosome number change, polyploidy has received significant attention because of the impact such an event may have on the organism.
ChromEvol implements a series of likelihood models for the evolution of chromosome numbers. By comparing the fit of the different models to biological data, it may be possible to gain insight regarding the pathways by which the evolution of chromosome number proceeds. For each model, the program estimates the rates for the possible transitions assumed by the model, infers the set of ancestral chromosome numbers, and estimates the location along the tree for which polyploidy events (and other chromosome number changes) occurred. For further methodological details, see the publications and manual on the Downloads page.
ChromEvol was first introduced in Mayrose et al in 2010. Further options and new evolutionary models were added in Glick & Mayrose in 2014. Version 2.0 is now available for download, along with an external computational pipeline which fascilitates easy ploidy inference.
When citing the chromEvol program, please refer to: Mayrose et al, 2010 and Glick & Mayrose, 2014.


Tizen target setup
To run Crosswalk applications on Tizen, you need to install the Crosswalk runtime on each target. (Unlike Crosswalk for Android, it is currently not possible to bundle the Crosswalk runtime with the application for deployment to Tizen.)
You can use either a physical Tizen device or an emulated one (virtual machine) as a target. The instructions below cover both, but mainly concentrate on using a Tizen IVI virtual machine.
Crosswalk is available for Tizen version 2.1 or higher.
Tizen extensions for Crosswalk are also available, which enable you to make use of Tizen APIs in applications running in Crosswalk on Tizen. We don't need them for this tutorial, so we won't cover them here.
In the instructions below, <path to Tizen SDK>
refers to the path to the root directory of your Tizen SDK installation.
Tizen device
At the time of writing (April 2014), there are no off-the-shelf Tizen devices on the market.
However, if you acquire one of the supported hardware platforms for Tizen IVI, you can install Tizen IVI on it and use it for testing. Once you've set it up, follow the Install Crosswalk instructions below to install Crosswalk on the device.
Tizen virtual machine
There are several ways to run Tizen IVI for development purposes:
- Run a Tizen IVI image under VMWare.
- Use a physical device and install Tizen IVI on it.
- Run a Tizen IVI image from a hard drive (e.g. USB stick) on Intel-based hardware.
- Run a Tizen IVI image using the Tizen SDK Emulator Manager.
The preferred approach, covered in the sections below, is to set up a Tizen IVI image under VMware.
Note: If you use the Tizen SDK Emulator manager or a physical device, some of the instructions below may not be applicable, as you will be using sdb
to copy files to and run a shell on the target, rather than ssh
.
Set up a Tizen IVI virtual machine with VMware
After you have set up your host machine with the VMware Player or Workstation (Windows, Linux), you can create a virtual Tizen IVI machine.
To do this, follow these instructions on the Tizen wiki.
Here's a summary of the steps for Fedora 20, using VMware Workstation and the tizen_20140410.5_ivi-release-mbr-i586-sdb.raw.bz2
daily build (available from the daily builds page). The steps for Windows are similar, though you will need to first install git SCM for Windows. After installing you will find a Git Bash
entry in the Windows menu which will bring up a bash shell with the tools you need, including curl
and bunzip2
.
Download, unpack and convert the Tizen IVI image:
> curl -O http://download.tizen.org/releases/daily/tizen/ivi/ivi-release/latest/images/ivi-release-mbr-i586/tizen_20140410.5_ivi-release-mbr-i586-sdb.raw.bz2 > bunzip2 tizen_*_ivi-release-mbr-i586-sdb.raw.bz2 > qemu-img convert -f raw -O vmdk \ tizen_20140410.5_ivi-release-mbr-i586-sdb.raw \ tizen-ivi-pre-3.0.vmdk
Start VMware Workstation.
Select File > New Virtual Machine.
Select Custom (advanced), then Next.
Accept the defaults for Virtual Machine Hardware Compatibility, then Next.
Select I will install the operating system later, then Next.
For the Guest operating system, check Linux then select Fedora from the drop-down. Select Next.
Set the Name to Tizen-IVI. Either accept the default location or choose a new one. I used
~/.vmware/Tizen-IVI
as the location for my VM.Accept the defaults for Processors and Memory (select Next for both).
Select Use bridged networking. This makes the virtual machine try to get an IP address from the local network when booted. If you know what you're doing, feel free to choose a different type of networking.
Accept the defaults for I/O Controller Types by selecting Next.
For Virtual Disk Type, choose IDE, then select Next.
Under Disk, select Use an existing virtual disk then Next.
Browse to the
tizen-ivi-pre-3.0.vmdk
disk image you created earlier, Open it, then click Finish. If you're prompted to change the format, click Keep existing format.Select Next then Customize hardware.
In the Virtual Machine Settings, ensure that the following are configured correctly:
- Remove New CD/DVD
- Remove Printer
- Display > Accelerate 3D graphics: on
You can remove items by selecting them then clicking the - button at the bottom of the screen.
Select Finish then Close to save your changes.
Close VMware Workstation, so the configuration for the VM is saved to disk. This is so we can make a manual adjustment to the configuration in the next step.
If you are using Intel integrated graphics, you need to force VMware to use 3D acceleration. Append a line to the
.vmx
file associated with this VM:echo 'mks.gl.allowBlacklistedDrivers = "TRUE"' >> ~/.vmware/Tizen-IVI/Tizen-IVI.vmx
If you are using VMware Player on a Linux host, you will also need to enable TF2-S3TC Texture Support in DRI. The problem is described here. It can be turned on with local
.drirc
file. On Ubuntu one can install thedriconf
application and change that setting from the GUI.Open VMware Workstation again, and start the configured VM from the front screen by right-clicking on its name (Tizen-IVI) and selecting Play Virtual Machine.
The first time the virtual machine boots, you will be prompted to download the VMware Tools for Linux. Don't install these for now.
Eventually, you should see the Tizen IVI image boot:
VMware tips/reminders
- Ctrl+Alt releases input capturing in the VM, giving you back the mouse and keyboard.
- My preference is to use bridged networking between the VM and the host, as this simplifies using ssh (for me at least).
Install Crosswalk
Once you have a running Tizen IVI virtual machine ready as a target, you can install Crosswalk on it. The instructions below assume that the target machine can be reached from the host machine over the network (to create the examples, I used bridged networking on the VM).
Get a root shell on the VM with:
ssh root@<ip address>
When prompted to accept the host key, do so.
The default Tizen IVI password for root is tizen.
The shell prompt should be
root:~>
if you logged in successfully.From the shell on the target, download the Crosswalk package:
root:~> curl -O https://download.01.org/crosswalk/releases/crosswalk/tizen-ivi/canary/<IP_ADDRESS>/crosswalk-<IP_ADDRESS>-0.i686.rpm
The URL above is for the rpm I tested most recently, but you can try a newer one if you wish. However, bear in mind that these files are canaries, and will not necessarily work or be stable; the version referenced above is known to work.
Install it:
root:~> rpm -ih crosswalk-<IP_ADDRESS>-0.i686.rpm
Check the installation is working by switching to the
app
user. This user has the correct configuration to be able to run Crosswalk on the target:root:~> su - app
Then test the status of the Crosswalk service:
app:~> systemctl --user status xwalk.service xwalk.service - Crosswalk Loaded: loaded (/usr/lib/systemd/user/xwalk.service; static) Active: inactive (dead)
The Run on Tizen section explains how to run an application with Crosswalk.


The o2 form tag lets you create rules for your input fields. If at least one rule isn't obeyed, the form will not be sent when the user clicks the submit button.
Instead, he will see an alert box, telling him what he did wrong - this message comes from the "ruleTitle" and "ruleMsg" attributes of the form tag and
tag, respectively (or other input field tags, like , ,
and ).
The validation may also be performed server side if you use this tag. The only thing
required for this is to call \$obj->verifyRules();
in the Perl module. What the form tag does is to add an input field called "__rules" and one called
"__ruleHash". __rules contains a string with all the input fields, rules and rule-messages of the form, plus indentifies the script to handle the request. __ruleHash
is an MD5 hash of this string appended to a secret key. The verifyRules method checks that the hash value is correct and then checks if all the rules are obeyed. In
case one or more rules are not obeyed, the corresponding rule messages are displayed, and the script dies.
In order for the form validation to work, the Javascript file /js/rules.js must be included. If you use the tag,
this will be done automatically.
or
ruleTitle - a text that will be displayed to the user if one or more fields could not be validated (according to the rules (see below))
class [o2Form]
onChange - javascript code that will be called every time an input field in the form changes value
disabled [0] - Should the input fields in the form be disabled?
urlMod parameters can be used instead of the action attribute
Normal html attributes
int - value must be an integer in the specified interval. Example: rule="int:2,8"
float - value must be a floating point number in the specified interval. Example: rule="float:1.2,2.4"
europeanDecimal - same as float, but comma (,) as decimal separator is okay as well
email - value must be an email address. To say that the field is not required, do this: rule="email:notRequired"
hostname - value must be a hostname. Same as for email for non-required fields.
url - value must be a URL. Same as for email for non-required fields.
regex - specify a regular expression that the value must match. Example: rule="regex:/^\d+$/"
required - field is required
length - specify minimum and maximum string length. Example: rule="length:0,10"
javascript - write your own validation code in Javascript. Not sure if this works.
numChecked - minimum and maximum number of checkboxes in the same checkbox group that are allowed to be checked. Example: rule="numChecked:1,3"
or rule="numChecked:2,*"
repeat - the value must be equal to the value of some other input field (must be an input tag) with the specified name. Example: rule="repeat:password1"
If input fields are used with the "label" attribute, but not the tag, including the following CSS could be a good starting
point for styling the form:
.o2Form {
position: relative;
float: left;
width: 100%;
}
.o2Input label, .o2RadioGroupLabel, .o2CheckboxGroupLabel, div.o2Select label, .o2DateSelect label, .o2Textarea label {
float: left;
clear: left;
width: 190px;
}
.o2RadioGroup, .o2CheckboxGroup, .o2Select, .o2DateSelect, .o2Textarea, .o2Input {
position: relative;
min-height: 20px;
}
.o2Input input, .o2Textarea textarea, .o2DateSelect input, .o2RadioButtons, .o2Checkboxes {
float: left;
}
Of course, the CSS should be in a central file.
When you use the <o2 form> tag, some extra Javascript functions become available (formFunctions.js). They are:
o2.getRadioValue(form, name)
- returns the value of the checked radio button in a radio-group, or null
if none is checked
o2.isChecked(form, name, value)
- returns true
if the corresponding checkbox or radio button is checked, false
otherwise
o2.getCheckboxValues(form, name)
- returns an array with the values of all the checked checkboxes in a checkbox-group
o2.getSelectValues(form, name)
- returns an array with the values of all the selected values in a select-menu. If only one item can be selected (ie multiple attribute not set),
selectMenuName.value
returns the value of the selected item.
o2.getInputValue(form, name)
- returns the value of the input field. Should work for all input types (including checkbox and select).
o2.getCurrentForm(element)
- Returns the form containing element
o2.clearForm(form)
- Removes all values from the form's input fields
When the rules in a form are checked successfully, the system will try to execute the function o2.rules.onRuleCheckSuccess() if found (through eval). So if you want to have some javascript executed after the rules are checked but before the form is submitted, create the function o2.rules.onRuleCheckSuccess() locally.
See also , , , ,
, and .


This is an demo of modeljs in the browser enviornment. Use this enviornment as a starting point to learn more about modeljs
Hello ???