--- layout: post esbma_id: 1178 title: F5 date: 2003-09-03 19:56:54 keywords: dev laughs teaser: And then I realized that my lousy problem-solving skills are actually Visual Studio's fault. ---
Before reading this silly tale, you need five pieces of background information:
OK, let's get started. Sunday evening I stopped for a moment to look out the window into my backyard. At that very moment, the extension cord on my cover pump sparked loudly and burst into flame.
Remember in Back to the Future when the model car caught fire and Doc Brown gasped? My reaction was remarkably similar. Those of you with a copy of the DVD might want to play that scene now to get the proper effect of the story.
Luckily the heavy rain put the fire out quickly. The cloud of smoke didn't linger too long either.
But with more rain in the forecast I really wanted to get that pump working again. With 20/20 hindsight it was obvious that the pouring rain had caused an electrical short at the point where the pump's cord was plugged into the extension cord. I just hoped the pump itself was undamaged.
So I ran out into the rain, grabbed the pump and brought it back into the garage. Luckily, it still worked! My mission at this point is clear -- I need to get this pump working again.
If you are a geek like me, you would probably solve this problem very similar to the way I did:
At this point I went back into the house, completely soaked and covered with mud. As I fetched some clean clothes, I realized that my approach to solving this problem was really lame. I made more trips through the rain than were really necessary.
And then I realized that my lousy problem-solving skills are actually Visual Studio's fault.
Seriously, my approach to this problem reminded me of the way I approach a coding task when I get in too much of a hurry: Don't take time to think about all the details. Instead, go for the instant gratification. Just hit F5 and see if the code works. When it doesn't, try another quick fix and hit F5 again. Eventually the code will work, without ever having to give it any real thought.
I think I was more careful back when compilers were slower. One of my first coder jobs was hacking on an app which took 11 hours to compile. The linker alone took 45 minutes, and I often had to spend that time listening to my boss gripe about how spoiled I was to have machines that could recompile so quickly: "Back when I was a coder on this project we had to submit punch cards to the mainframe operator and wait two days to see if we had a syntax error."
I don't think I was spoiled back then, but I certainly am now. Visual Studio recompiles so fast that I can't resist hitting F5. I want to see my code work. Right now.
But I'd have to admit that when I hurry and do this kind of quick-fix coding, I usually end up all muddy and soaked:
It's great to have fast developer tools, but I still do better work when I take my time. And so do you.
P.S. Pedantic readers will observe that Intel deserves its share of my tongue-in-cheek blame. After all, my faster compiles are probably at least somewhat related to the fact that the CPU in my ThinkPad is over 250 times faster than the one in that Mac Plus I was using fifteen years ago. Point conceded, but it's very fashionable to blame Microsoft these days for things that are not really their fault, so I'm just being trendy.
P.P.S. Readers with real carpentry skills will observe that there is absolutely no good reason to need duct tape during the construction of a swingset. Point conceded. Please, don't ask.


Menu Selection
My Contacts
My Contacts
About
Profile
Sign Out
MyContacts
Welcome to My Contacts
This is home


Home
About
Experiences
Projects
Blog
Contact
My
Published Articles
Inception Network and Its Derivatives
Read
AI, ML, DL.. What’s what?🤔🤔
Read
Deep dive into ResNets
Read
Guide To Optimizers For Machine Learning
Read


LZOP
Section: (1)Updated: 2005-07-25
Index Return to Main Contents
NAME
lzop - compress or expand filesABSTRACT
lzop is a file compressor very similar to gzip. lzop favors speed over compression ratio.SYNOPSIS
lzop [ command ] [ options ] [ filename ... ]lzop [-dxlthIVL19] [-qvcfFnNPkU] [-o file] [-p[path]] [-S suffix] [filename ...]
DESCRIPTION
lzop reduces the size of the named files. Whenever possible, each file is compressed into one with the extension .lzo, while keeping the same ownership modes, access and modification times. If no files are specified, or if a file name is ``-'', lzop tries to compress the standard input to the standard output. lzop will only attempt to compress regular files or symbolic links to regular files. In particular, it will ignore directories.If the compressed file name is too long for its file system, lzop truncates it.
Compressed files can be restored to their original form using lzop -d. lzop -d takes a list of files on its command line and decompresses each file whose name ends with .lzo and which begins with the correct magic number to an uncompressed file without the original extension. lzop -d also recognizes the special extension .tzo as shorthand for .tar.lzo. When compressing, lzop uses the .tzo extension if necessary instead of truncating a file with a .tar extension.
lzop stores the original file name, mode and time stamp in the compressed file. These can be used when decompressing the file with the -d option. This is useful when the compressed file name was truncated or when the time stamp was not preserved after a file transfer.
lzop preserves the ownership, mode and time stamp of files when compressing. When decompressing lzop restores the mode and time stamp if present in the compressed files. See the options -n, -N, --no-mode and --no-time for more information.
lzop always keeps original files unchanged unless you use the option -U.
lzop uses the LZO data compression library for compression services. The amount of compression obtained depends on the size of the input and the distribution of common substrings. Typically, text such as source code or English is compressed into 40-50% of the original size, and large files usually compress much better than small ones. Compression and decompression speed is generally much faster than that achieved by gzip, but compression ratio is worse.
COMPRESSION LEVELS
lzop offers the following compression levels of the LZO1X algorithm:- -3
- the default level offers pretty fast compression. -2, -3, -4, -5 and -6 are currently all equivalent - this may change in a future release.
- -1, --fast
- can be even a little bit faster in some cases - but most times you won't notice the difference
- -7, -8, -9, --best
- these compression levels are mainly intended for generating pre-compressed data - especially -9 can be somewhat slow
Decompression is very fast for all compression levels, and decompression speed is not affected by the compression level.
MAIN COMMAND
If no other command is given then lzop defaults to compression (using compression level -3).- -#, --fast, --best
- Regulate the speed of compression using the specified digit #, where -1 or --fast indicates the fastest compression method (less compression) and -9 or --best indicates the slowest compression method (best compression). The default compression level is -3.
- -d, --decompress, --uncompress
- Decompress. Each file will be placed into same the directory as the compressed file.
- -x, --extract
- Extract compressed files to the current working directory. This is the same as `-dPp'.
- -t, --test
- Test. Check the compressed file integrity.
- -l, --list
-
For each compressed file, list the following
fields:
method: compression method compressed: size of the compressed file uncompr.: size of the uncompressed file ratio: compression ratio uncompressed_name: name of the uncompressed file
In combination with the --verbose option, the following fields are also displayed:
date & time: time stamp for the uncompressed file
With --name, the uncompressed name, date and time are those stored within the compress file if present.
With --verbose, the size totals and compression ratio for all files is also displayed. With --quiet, the title and totals lines are not displayed.
Note that lzop defines compression ratio as compressed_size / uncompressed_size.
- --ls, --ls=FLAGS
-
List each compressed file in a format similar to ls -ln.
The following flags are currently honoured:
F Append a `*' for executable files.
G Inhibit display of group information.
Q Enclose file names in double quotes. - --info
- For each compressed file, list the internal header fields.
- -I, --sysinfo
- Display information about the system and quit.
- -L, --license
- Display the lzop license and quit.
- -h, -H, --help
- Display a help screen and quit.
- -V
- Version. Display the version number and compilation options and quit.
- --version
- Version. Display the version number and quit.
OPTIONS
- -c, --stdout, --to-stdout
- Write output on standard output. If there are several input files, the output consists of a sequence of independently (de)compressed members. To obtain better compression, concatenate all input files before compressing them.
- -o FILE, --output=FILE
- Write output to the file FILE. If there are several input files, the output consists of a sequence of independently (de)compressed members.
- -p, -pDIR, --path=DIR
- Write output files into the directory DIR instead of the directory determined by the input file. If DIR is omitted, then write to the current working directory.
- -f, --force
-
Force lzop to
- overwrite existing files - (de-)compress from stdin even if it seems a terminal - (de-)compress to stdout even if it seems a terminal - allow option -c in combination with -U
Using -f two or more times forces things like
- compress files that already have a .lzo suffix - try to decompress files that do not have a valid suffix - try to handle compressed files with unknown header flags
Use with care.
- -F, --no-checksum
- Do not store or verify a checksum of the uncompressed file when compressing or decompressing. This speeds up the operation of lzop a little bit (especially when decompressing), but as unnoticed data corruption can happen in case of damaged compressed files the usage of this option is not generally recommended. Also, a checksum is always stored when compressing with one of the slow compression levels (-7, -8 or -9), regardless of this option.
- -n, --no-name
- When decompressing, do not restore the original file name if present (remove only the lzop suffix from the compressed file name). This option is the default under UNIX.
- -N, --name
- When decompressing, restore the original file name if present. This option is useful on systems which have a limit on file name length. If the original name saved in the compressed file is not suitable for its file system, a new name is constructed from the original one to make it legal. This option is the default under DOS, Windows and OS/2.
- -P
- When decompressing, restore the original path and file name if present. When compressing, store the relative (and cleaned) path name. This option is mainly useful when using archive mode - see usage examples below.
- --no-mode
- When decompressing, do not restore the original mode (permissions) saved in the compressed file.
- --no-time
- When decompressing, do not restore the original time stamp saved in the compressed file.
- -S .suf, --suffix=.suf
- Use suffix .suf instead of .lzo. The suffix must not contain multiple dots and special characters like '+' or '*', and suffixes other than .lzo should be avoided to avoid confusion when files are transferred to other systems.
- -k, --keep
- Do not delete input files. This is the default.
- -U, --unlink, --delete
- Delete input files after succesfull compression or decompression. Use this option to make lzop behave like gzip and bzip2. Note that explicitly giving -k overrides -U.
- --crc32
- Use a crc32 checksum instead of a adler32 checksum.
- --no-warn
- Suppress all warnings.
- --ignore-warn
- Suppress all warnings, and never exit with exit status 2.
- -q, --quiet, --silent
- Suppress all warnings and decrease the verbosity of some commands like --list or --test.
- -v, --verbose
- Verbose. Display the name for each file compressed or decompressed. Multiple -v can be used to increase the verbosity of some commands like --list or --test.
- --
- Specifies that this is the end of the options. Any file name after -- will not be interpreted as an option even if it starts with a hyphen.
OTHER OPTIONS
- --no-stdin
- Do not try to read standard input (but a file name ``-'' will still override this option). In old versions of lzop, this option was necessary when used in cron jobs (which do not have a controlling terminal).
- --filter=NUMBER
-
Rarely useful.
Preprocess data with a special ``multimedia'' filter
before compressing in order to improve compression ratio.
NUMBER must be a decimal number from 1 to 16, inclusive.
Using a filter slows down both compression and decompression
quite a bit, and the compression ratio usually doesn't improve
much either...
More effective filters may be added in the future, though.
You can try --filter=1 with data like 8-bit sound samples, --filter=2 with 16-bit samples or depth-16 images, etc.
Un-filtering during decompression is handled automatically.
- -C, --checksum
- Deprecated. Only for compatibility with very old versions as lzop now uses a checksum by default. This option will get removed in a future release.
- --no-color
- Do not use any color escape sequences.
- --mono
- Assume a mono ANSI terminal. This is the default under UNIX (if console support is compiled in).
- --color
- Assume a color ANSI terminal or try full-screen access. This is the default under DOS and in a Linux virtual console (if console support is compiled in).
ADVANCED USAGE
lzop allows you to deal with your files in many flexible ways. Here are some usage examples:- backup mode
-
tar --use-compress-program=lzop -cf archive.tar.lzo files..
This is the recommended mode for creating backups. Requires GNU tar or a compatible version which accepts the `--use-compress-program=XXX' option.
- single file mode: individually (de)compress each file
-
create lzop a.c -> create a.c.lzo lzop a.c b.c -> create a.c.lzo & b.c.lzo lzop -U a.c b.c -> create a.c.lzo & b.c.lzo and delete a.c & b.c lzop *.c
extract lzop -d a.c.lzo -> restore a.c lzop -df a.c.lzo -> restore a.c, overwrite if already exists lzop -d *.lzo
list lzop -l a.c.lzo lzop -l *.lzo lzop -lv *.lzo -> be verbose
test lzop -t a.c.lzo lzop -tq *.lzo -> be quiet
- pipe mode: (de)compress from stdin to stdout
-
create lzop < a.c > y.lzo cat a.c | lzop > y.lzo tar -cf - *.c | lzop > y.tar.lzo -> create a compressed tar file
extract lzop -d < y.lzo > a.c lzop -d < y.tar.lzo | tar -xvf - -> extract a tar file
list lzop -l < y.lzo cat y.lzo | lzop -l lzop -d < y.tar.lzo | tar -tvf - -> list a tar file
test lzop -t < y.lzo cat y.lzo | lzop -t
- stdout mode: (de)compress to stdout
-
create lzop -c a.c > y.lzo
extract lzop -dc y.lzo > a.c lzop -dc y.tar.lzo | tar -xvf - -> extract a tar file
list lzop -dc y.tar.lzo | tar -tvf - -> list a tar file
- archive mode: compress/extract multiple files into a single archive file
-
create lzop a.c b.c -o sources.lzo -> create an archive lzop -P src/*.c -o sources.lzo -> create an archive, store path name lzop -c *.c > sources.lzo -> another way to create an archive lzop -c *.h >> sources.lzo -> add files to archive
extract lzop -dN sources.lzo lzop -x ../src/sources.lzo -> extract to current directory lzop -x -p/tmp < ../src/sources.lzo -> extract to /tmp directory
list lzop -lNv sources.lzo
test lzop -t sources.lzo lzop -tvv sources.lzo -> be very verbose
If you wish to create a single archive file with multiple members so that members can later be extracted independently, you should prefer a full-featured archiver such as tar. The latest version of GNU tar supports the --use-compress-program=lzop option to invoke lzop transparently. lzop is designed as a complement to tar, not as a replacement.
ENVIRONMENT
The environment variable LZOP can hold a set of default options for lzop. These options are interpreted first and can be overwritten by explicit command line parameters. For example:
for sh/ksh/zsh: LZOP="-1v --name"; export LZOP for csh/tcsh: setenv LZOP "-1v --name" for DOS/Windows: set LZOP=-1v --name
On Vax/VMS, the name of the environment variable is LZOP_OPT, to avoid a conflict with the symbol set for invocation of the program.
Not all of the options are valid in the environment variable - lzop will tell you.
SEE ALSO
bzip2(1), gzip(1), tar(1)Precompiled binaries for some platforms are available from the lzop home page.
see http://www.oberhumer.com/opensource/lzop/
lzop uses the LZO data compression library for compression services.
see http://www.oberhumer.com/opensource/lzo/
DIAGNOSTICS
Exit status is normally 0; if an error occurs, exit status is 1. If a warning occurs, exit status is 2 (unless option --ignore-warn is in effect).lzop's diagnostics are intended to be self-explanatory.
BUGS
Please report all problems immediately to the author.AUTHOR
Markus Franz Xaver Johannes Oberhumer<EMAIL_ADDRESS>http://www.oberhumer.com/opensource/lzop/COPYRIGHT
lzop and the LZO library are Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 by Markus Franz Xaver Johannes Oberhumer. All Rights Reserved.lzop and the LZO library are distributed under the terms of the GNU General Public License (GPL).
Legal info: If want to integrate lzop into your commercial (backup-)system please carefully read the GNU GPL FAQ at http://www.gnu.org/licenses/gpl-faq.html about possible implications.
Index
- NAME
- ABSTRACT
- SYNOPSIS
- DESCRIPTION
- COMPRESSION LEVELS
- MAIN COMMAND
- OPTIONS
- OTHER OPTIONS
- ADVANCED USAGE
- ENVIRONMENT
- SEE ALSO
- DIAGNOSTICS
- BUGS
- AUTHOR
- COPYRIGHT
This document was created by man2html, using the manual pages.
Time: 05:29:05 GMT, December 24, 2015


Using three.js 3D library to teach physics, programming and encourage young nerds.
Principia is a JavaScript library who offers virtual experiments to test and learn the laws of physics. This is not a perfect simulator, but it's good enough to have fun and enjoy the science for a while playing with the Universe in God mode.
Newton was clever enought to understand the true nature of movement is to keep on moving forever unless something stops it. This is called Uniform Motion and it was a counter-intuitive proposal (even nowadays for a lot of people) because everything we start moving in planet Earth surface ends up stopping due to external forces like friction with floor or air.
In this experiment there are no surrounding elements who can influence the movement of such a lonely star, so it should go on forever with the initial velocity. This velocity has been stated as "advance a distance equal to one diameter of the star in the path of X axis per second". There will be created new axes every second wherever the center of the star is, and because of Newton's first law they should appear separated by one star diameter each other. Go to experiment
When a force is applied to a body, it will gain velocity gradually (this is called Accelerated Motion). But it doesn't applies the same way to all bodies, because the more mass it has, the less acceleration it will get (its velocity will increase in a slower manner), just like pushing with the same force a skateboard or a car.
Physical objects (the ones who has mass) generate a force among them called "gravity" (more about this later). This force makes things fall towards the cented of the Earth or, in this case, the Sun. We can drop a stone, an apple or, in this case, a full planet like Mercury. Acceleration means velocity will grow gradually every second, so the distance the body advances will "double" grow every second (according to the square of the elapsed seconds). There will appear axes every ten seconds in the center of Mercury as it is falling, and you will realize the distance among axes gets bigger and biger through time (one diameter, two, tree...). Go to experiment
Note some extra details: Mercury has been reduced (just as "tiny" as one and a half mount Everest) to make its diameter fit in this experiment, placing it in that precise starting point and pushing it with a precise initial velocity so it can advance in the required steps. Detailed calculations are shown in source code. Another interesting detail is gravity force is not constant, because it varies with the distance to the center of the Sun in this case, so the closer it gets the stronger is the force. If you look closely tho the last axes you will notice they are getting closer to the Sun than it was supposed to be.
All forces between objects exist in equal magnitude and opposite direction. If one object pushes a force on a second object, the second one pushes the same force on the first one, but oppsite, just like pushing someone over ice, he will move forward, but you'll move backwards. Same applies to pulling. The net sum of all the interaction forces of all objets will add up to zero.
Two identical objects will get attracted with same force intensity each one, so they will meet at the midpoint. Because stars are so huge and distnces are really, really big, they are going to spend more than eight hours to start touching at the end of the fall, we have accelerated time to make it one thousand faster (1 life second = 1000 simulated seconds) so you do not get bored. One new axes set will be drom every hour at the center of each star. Go to experiment
Please notice the centers of both objects was separated 3 million Kilometers each to the coordinates origin (marked at the center of the big axes) so, being both affected by two equal opposite forces, they end up at very center, as it should be. The distances they are marking every hour are increasing in a similar accelerating pattern as the one we saw in the second law example.
We have an excellent example in the neiborghood. We call it Solar System, and it is well known with known masses and velocities, but we can imagine other solar systems...
let's watch a subset of our Solar System, made up of the rocky planets (Mercury, Venus, Earth and its Moon and Mars). Initial distances to Sun and velocities are the average ones that appears in Wikipedia, but they are not precisely placed at the actual locations in a determined date (they are all aligned in the X axis). Go to experiment
What would happen in the Solar System if there would be a second Sun in it? Zoom it out and scale it to max (pressing > x5) and then accelerate time one million times faster (pressing + x6) to be witness of chaos. Go to experiment


Volume 2 - 2015
Neem Biodiesel - A Sustainability StudyA. C. Lokesh, N. S. Mahesh, Balakrishna Gowda, Rajesh Kumar K, Peter White
Publication date: February 2015
Page(s): 1-10
DOI: 10.11159/jbb.2015.001
Dinita Sharma, Bishnu Joshi, Megh Raj Bhatt, Jarina Joshi, Rajani Malla, Tribikram Bhattarai, Lakshmaiah Sreerama
Publication date: September 2015
Page(s): 11-20
DOI: 10.11159/jbb.2015.002


001/* 002 * Copyright (C) 2002-2017 Sebastiano Vigna 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016package it.unimi.dsi.fastutil.shorts; 017import java.util.SortedSet; 018import java.util.Collection; 019/** A type-specific {@link SortedSet}; provides some additional methods that use polymorphism to avoid (un)boxing. 020 * 021 *
Additionally, this interface strengthens {@link #iterator()}, 022 * {@link #comparator()} (for primitive types), {@link SortedSet#subSet(Object,Object)}, 023 * {@link SortedSet#headSet(Object)} and {@link SortedSet#tailSet(Object)}. 024 * 025 * @see SortedSet 026 */ 027public interface ShortSortedSet extends ShortSet , SortedSet<Short> { 028 /** Returns a type-specific {@link it.unimi.dsi.fastutil.BidirectionalIterator} on the elements in 029 * this set, starting from a given element of the domain (optional operation). 030 * 031 *
This method returns a type-specific bidirectional iterator with given 032 * starting point. The starting point is any element comparable to the 033 * elements of this set (even if it does not actually belong to the 034 * set). The next element of the returned iterator is the least element of 035 * the set that is greater than the starting point (if there are no 036 * elements greater than the starting point, {@link 037 * it.unimi.dsi.fastutil.BidirectionalIterator#hasNext() hasNext()} will return 038 * false). The previous element of the returned iterator is 039 * the greatest element of the set that is smaller than or equal to the 040 * starting point (if there are no elements smaller than or equal to the 041 * starting point, {@link it.unimi.dsi.fastutil.BidirectionalIterator#hasPrevious() 042 * hasPrevious()} will return false). 043 * 044 *
Note that passing the last element of the set as starting point and 045 * calling {@link it.unimi.dsi.fastutil.BidirectionalIterator#previous() previous()} you can traverse the 046 * entire set in reverse order. 047 * 048 * @param fromElement an element to start from. 049 * @return a bidirectional iterator on the element in this set, starting at the given element. 050 * @throws UnsupportedOperationException if this set does not support iterators with a starting point. 051 */ 052 ShortBidirectionalIterator iterator(short fromElement); 053 /** Returns a type-specific {@link it.unimi.dsi.fastutil.BidirectionalIterator} iterator on the collection. 054 * 055 *
Note that this specification strengthens the one given in the corresponding type-specific 056 * {@link Collection}. 057 * 058 *
The iterator returned by the {@link #iterator()} method and by this 059 * method are identical; however, using this method you can save a type casting. 060 * 061 * @deprecated As of fastutil 5, replaced by {@link #iterator()}. 062 */ 063 @Deprecated 064 ShortBidirectionalIterator shortIterator(); 065 /** Returns a type-specific {@link it.unimi.dsi.fastutil.BidirectionalIterator} on the elements in 066 * this set. 067 * 068 *
Note that this specification strengthens the one given in the corresponding type-specific 069 * {@link Collection}. 070 * 071 *
This method returns a parameterised bidirectional iterator. The iterator 072 * can be moreover safely cast to a type-specific iterator. 073 * 074 * @return a bidirectional iterator on the element in this set. 075 */ 076 @Override 077 ShortBidirectionalIterator iterator(); 078 /** Returns a view of the portion of this sorted set whose elements range from fromElement, inclusive, to toElement, exclusive. 079 *
Note that this specification strengthens the one given in {@link SortedSet#subSet(Object,Object)}. 080 * @see SortedSet#subSet(Object,Object) 081 */ 082 ShortSortedSet subSet(short fromElement, short toElement) ; 083 /** Returns a view of the portion of this sorted set whose elements are strictly less than toElement. 084 *
Note that this specification strengthens the one given in {@link SortedSet#headSet(Object)}. 085 * @see SortedSet#headSet(Object) 086 */ 087 ShortSortedSet headSet(short toElement); 088 /** Returns a view of the portion of this sorted set whose elements are greater than or equal to fromElement. 089 *
Note that this specification strengthens the one given in {@link SortedSet#headSet(Object)}. 090 * @see SortedSet#tailSet(Object) 091 */ 092 ShortSortedSet tailSet(short fromElement); 093 /** {@inheritDoc} 094 *
Note that this specification strengthens the one given in {@link SortedSet#comparator()}. 095 */ 096 ShortComparator comparator(); 097 /** Returns the first (lowest) element currently in this set. 098 * @see SortedSet#first() 099 */ 100 short firstShort(); 101 /** Returns the last (highest) element currently in this set. 102 * @see SortedSet#last() 103 */ 104 short lastShort(); 105 /** {@inheritDoc} 106 * @deprecated Please use the corresponding type-specific method instead. 107 */ 108 @Deprecated 109 @Override 110 ShortSortedSet subSet(Short fromElement, Short toElement) ; 111 /** {@inheritDoc} 112 * @deprecated Please use the corresponding type-specific method instead. 113 */ 114 @Deprecated 115 @Override 116 ShortSortedSet headSet(Short toElement); 117 /** {@inheritDoc} 118 * @deprecated Please use the corresponding type-specific method instead. 119 */ 120 @Deprecated 121 @Override 122 ShortSortedSet tailSet(Short fromElement); 123 /** {@inheritDoc} 124 * @deprecated Please use the corresponding type-specific method instead. 125 */ 126 @Deprecated 127 @Override 128 Short first(); 129 /** {@inheritDoc} 130 * @deprecated Please use the corresponding type-specific method instead. 131 */ 132 @Deprecated 133 @Override 134 Short last(); 135}


Check out what you can do with smalo.box!
High level of security powerd by the ethereum blockchain. Authorize other users and know how opened your box
We offer all software for free. Help us to improve our software!
We offer a full documentation to do it your own and build your custumized box
Customize the code and build a box with your ideas
| Feature ideas | Available |
|---|---|
| Rating | |
| Availabillity | |
| Grant permissions | |
| Rent/Lock/Unlock | |
| GPS | |
| Heating | |
| Cooling | |
| Build your own services |
| Box address | # | |||||
|---|---|---|---|---|---|---|
| 0xe2698baa693aac31ed1cc12a8c7f1234ae405a6e | Schlossallee 123, Berlin | -2.4h | 200+ |


| Path: | website/180seconds.txt |
| Last Update: | Mon Mar 10 15:09:13 -0400 2008 |
h1. Ick in 180 seconds or less
h2. Transforming your code
Object#let turns:

Into:

Object#returning turns:

Into:

Object#my turns:

Into:

Object#inside turns:

Into:

h2. Test Cases
The four canonical block structuring methods (let, returning, my, and inside):

 Ick.sugarize arr = []
# let returns the value of the block and executes in the current environment assert_equal(
"3628800 ends with zero", let((1..10).inject(&:*)) { |num| arr << self.class num % 10 == 0 ? "#{num} ends with zero" : "#{num} does not end with zero" })
assert_equal([ self.class ], arr)
# returning returns the value of the expression and executes in the current environment assert_equal(
3628800, returning((1..10).inject(&:*)) { |num| arr << self.class num % 10 == 0 ? "#{num} ends with zero" : "#{num} does not end with zero" })
assert_equal([ self.class, self.class ], arr)
# my returns the value of the block and executes in the expression‘s environment assert_equal(
"3628800 ends with zero", my((1..10).inject(&:*)) { |num| arr << self.class num % 10 == 0 ? "#{num} ends with zero" : "#{num} does not end with zero" })
assert_equal([ self.class, self.class, Fixnum ], arr)
# inside returns the value of the expression and executes in the expression‘s environment assert_equal(
3628800, inside((1..10).inject(&:*)) { |num| arr << self.class num % 10 == 0 ? "#{num} ends with zero" : "#{num} does not end with zero" })
assert_equal([ self.class, self.class, Fixnum, Fixnum ], arr)

The two most common guarded evauators (maybe and try):

 # an object with two methods. do returns itself, do_not returns nil yoda = returning(Object.new) do |obj|
def obj.do self end def obj.do_not nil end
end
# maybe handles nils, even for methods nil has, but not missing methods assert_equal(
yoda, maybe(yoda) { |obj| obj.do }
) assert_nil(
maybe(nil) { |obj| obj.do }
) assert_nil(
maybe(yoda) { |obj| obj.do_not.do }
) assert_nil(
maybe(nil) { |obj| obj.nil? }
) assert_raise(NoMethodError) do
maybe(yoda) { |obj| obj.fubar }
end
try handles NoMethodErrors, without caring whether nil is involved assert_equal(
yoda, try(yoda) { |obj| obj.do }
) assert_nil(
try(nil) { |obj| obj.do_not }
) assert_not_nil(
try(nil) { |obj| obj.nil? }
) assert_nil(
try(yoda) { |obj| obj.fubar }
)

h2. Administrivia
h3. Home Sweet Home
"ick.rubyforge.org":ick.rubyforge.org
h3. How to submit patches
Read the "8 steps for fixing other people‘s code":drnicwilliams.com/2007/06/01/8-steps-for-fixing-other-peoples-code/.
The trunk repository is @svn://rubyforge.org/var/svn/ick/trunk@ for anonymous access.
h3. License
This code is free to use under the terms of the "MIT license":en.wikipedia.org/wiki/MIT_License.
h3. Shout Out
"Mobile Commons":mcommons.com/. Still Huge After All These Years.
h3. Contact
Comments are welcome. Send an email to "Reginald<EMAIL_ADDRESS>And you can always visit "weblog.raganwald.com":weblog.raganwald.com/ to see what‘s cooking.


Yes, It will be useful to students and they will get insight about the subject and its purpose of learning the subject.
It would be really helpful and it will help them implement what we study in real life.
Obviously yes. Our education system should be constructed in such a way that the end receivers are aware of what exactly that they are getting exposed to.
We want the students to understand what they study and not just mug-up the definitions.
We conducted a recent study and found that about 60% of the students in a class don't really know or understand what they are studying and where is it implemented.
Thus we joined hands to combat this situation, and atleast bring a small change to the education system of this Country.
If you have you have the same mind-set and are confused on where to start, you have arrived at the right place.
If you think you can contribute in our cause we would love to have you in our team.
Write to us on admin@understandlearning.rf.gd


mvtest APIs¶
kernutils¶
Utilites for tests under suites/kernel tests.
-
get_nr_cpus
()[source]¶ Return number of available online cpus.
- Returns:
- int: Number of online cpus from /proc/cpuinfo
-
get_online_cpus
()[source]¶ Returns a list of online cpus from /sys/devices/system/cpu/online.
- Returns:
- list: cpu0 is not included as its expected be online.
netutils¶
Utilities for tests under suites/net.
utils¶
mvtest library with general purpose utility APIs
-
class
ExpectShell
[source]¶ Provides a set of APIs for interactive shell. Has four main methods
- connect:
Spawns an expect shell
- run_cmd:
Combines both expect send and match.
- match_group:
Returns the matched regex pattern as tuples.
- terminate:
Terminate the spawned process.
-
connect
(cmd, timeout=30)[source]¶ - Returns:
pexpect.spwan object: on success.
False: on Failure
- Args:
cmd (string): command to spawn.
timeout (int): default 30 seconds.
- Examples:
EX1:
expect = ExpectShell() expect.connect('telnet shark 2305', timeout=60)
Ex2:
expect = ExpectShell() expect.connect('gdb a.out')
-
match_groups
()[source]¶ - Returns:
- A tuple of matched groups.
- Examples:
expect = ExpectShell() expect.connect('telnet shark 2305', timeout=60) index = expect.run_cmd('ls', pattern=['(*.py)', '*.sh']) assert index == 1 or index == 0 log.info(expect.match_groups())
-
run_cmd
(cmd, pattern, sleep=None, timeout=30)[source]¶ - Returns:
Index into the pattern list: on success.
If the pattern was not a list this returns index 0 on a successful match.
False: on Failure
- Args:
cmd (string): command to run.
pattern: StringType, or pexpect.EOF, a compiled re, or list.
sleep (int): Default is None. Will sleep after sending command.
timeout (int): default 30 seconds
- Examples:
expect = ExpectShell() expect.connect('telnet shark 2305', timeout=60) index = expect.run_cmd('ls', pattern=['(*.py)', '*.sh']) assert index == 1 or index == 0
-
class
RemoteMachine
(host, username='root', password='')[source]¶ - Returns:
- None: on failure
- Args:
host (string): hostname or ipaddress of remote host.
username (string): Default is root. If not root, specify username.
password (string): Default is NULL. If not, specify password.
-
file_get
(src, dst)[source]¶ Transfer files from remote machine to local target.
- Returns:
True: on success
False: on failure
- Args:
src: Absolute path of the file on remote.
dst: Absolute path of the file on local.
- Examples:
remote = RemoteMachine('bogart') remote.file_get('/tmp/remote_file', '/tmp/local_file')
-
file_put
(src, dst)[source]¶ Transfer files from local target to remote machine.
- Returns::
True: on success.
False: on failure
- Args:
src : Absolute path of the file on target.
dst : Absolute path of the file on remote
- Examples:
remote = RemoteMachine('bogart') remote.file_put('/tmp/local_file', '/tmp/remote_file')
-
run_cmd
(cmd)[source]¶ Run a command in remote host.
- Returns:
None: on failure (non-zero return code) OR
string: NullOutput or stripped command output on success.
- Args:
- cmd (string) : command to run on remote host.
- Examples:
remote = RemoteMachine('bogart') remote.run_cmd('uptime') remote = RemoteMachine('<IP_ADDRESS>') remote.run_cmd('uptime')
-
check_kernel_configs
(args, logging=True)[source]¶ check if the given kernel config/s is enabled in the kernel.
- Returns:
- bool: On failure, missing kernel configs are listed as python list.
- Args:
args (string or list): string for single kernel config OR a python list of kernel configs. See examples.
logging (bool): logs errors if True. By default is True.
- Examples:
1. check_kernel_configs('PREEMPT_RT_FULL') 2. check_kernel_configs(['PREEMPT_RT_FULL', 'RELOCATABLE']) 3. check_kernel_configs(['PREEMPT_RT_FULL=n', 'RELOCATABLE=m']) 4. check_kernel_configs(['PREEMPT_RT_FULL=y', 'RELOCATABLE'])
-
get_status_output
(cmd, wdir=None)[source]¶ Runs a command via the shell.
- Returns:
- tuple: (exit_code, text_output)
-
run_cmd
(cmd, check_rc=True, wdir=None, stdout_arg=-1, stdin_arg=None, shell=True, background=False, **kwargs)[source]¶ Run a command, either interactively (default) or in background.
- Returns:
None: on failure (non-zero return code) OR
string: NullOutput or stripped command output on success OR
Popen object: If background=True. Following methods & attributes could be used
p = run_cmd(cmd, background=True) p.communicate() p.returncode
- Args:
cmd (string): command to run.
check_rc (bool): Default is True. False will not log command, output/ errors.
wdir (string): Run cmd from specificed directory.
background (bool): Default is False. True returns Popen object. Run command in background. For usage see example below.
stdout_arg: Default is subprocess.PIPE. Else File descriptor to output to a file.
stdin_arg: Default is None. Progam’s standard input.
shell (bool): Default is True. Should be True for piped commands. See Ex 2: to know how to send piped commands.
kwargs: optional arguments to be passed to Popen()
- Examples:
Ex 1: To kill the parent and its child process and ensure no zombies are present.
p = run_cmd(cmd, background=True, preexec_fn=os.setpgrp). do_something() do_something_else() os.kill(-p.pid, signal.SIGKILL) **OR** run_cmd('killall cmd')
Ex 2: piped commands alternatively can be executed directly as
run_cmd('cat sample | wc -l', shell=True)
-
run_stress
(cpu=None, mem=None, membytes=None, io=None, timeout=None)[source]¶ Impose cpu or memory or IO stress or all 3 at once in background.
- Returns:
- Popen: on success or False on failure.
- Args:
cpu (int): Spawn N workers spinning on sqrt().
mem (int): Spawn N workers spinning on malloc/free.
io (int): Spawn N workers spinning on sync.
membytes (string): malloc B bytes per vm worker.
size can be B,K,M or G.
timeout (string): Timeout after N seconds.
time can be in s, m, h, d, y


SCHOOL TRANSPORT
Students can avail the school transport subject to the availability of seats. The routes of the school buses are drawn and the parents should consult the school transport incharge for necessary details. Bus facility is not mandatory.
BUS-RULES
- All students using the school bus are expected to be on the right side of the bus stops atleast five minutes before the arrival of the bus.
- The buses will not wait for the late comers.
- The children should stay away from the main road until the bus arrives.
- No student should come near the entry door of the bus unless it has made a complete stop.
- All students must occupy vacant seats immediately after boarding their buses.
- The front door of the bus is the only authorised entrance and exit.
- The drivers are authorised to stop buses at the designated stop only unless otherwise directed by the Bus Incharge. The list of stops is prepared keeping in view the convenience and safety of all bus commuters and is always subject to change.
- When the bus is in motion students must not move around in the bus and no part of their body should be outside the bus.
- Objects of any kind must not be discarded inside or thrown out of the bus.
- Students will be held responsible for any damage to bus caused by negligence or vandalism.
- Unruly behavior like shrieking and shouting is strictly prohibited. Courteous behavior is expected at all times
- The driver's attention must not be distracted for any reason.
- The Bus Incharge and student bus monitors are responsible for maintaining discipline in the buses. Any serious offence must be reported to the Principal.
- The bus conductors and drivers are not to allow entry to any Parent or outsiders in the bus, in any case, at the time of the school route.
- The Parents of the student should write the route number and full address on the request slip, while taking the child during school time.
- Students should bring the Bus Pass daily to school and should be shown to the Route Incharge or Transport Incharge on demand.
- Rs. 10/- will be charged for Duplicate Bus Pass.
- Transport charges are to be paid along with monthly fees.
- Transport fees will not be accepted without the production of Bus Pass.
- School transport once availed cannot be discontinued in mid session. Students will have to pay transport charges for 11 months.
-
CYCLE STAND
- Students coming by cycles will pay Rs. 25.00 p.m. for eleven months. Payment for cycle stand will be made by 10th of evey month. Students are not allowed to come to school by Motorbikes/Scooters.


Join the conversation about self-efﬁcacy today by launching the activity below.
TEAM ONE CREATED WITH LOVE


Exceptions¶
This chapter describes all the exceptions used by condoor module.
Init file for condoor.
-
exception
GeneralError
(message=None, host=None)[source]¶ Bases:
exceptions.Exception
General error.
This is a base class for all exceptions raised by condoor module.
-
__init__
(message=None, host=None)[source]¶ The class constructor.
- Args:
- message (str): Custom message to be passed to the exceptions. Defaults to None.
- If None then the general class __doc__ is used.
- host (str): Custom string which can be used to enhance the exception message by adding the “host: “
- prefix to the message string. Defaults to None. If host is None then message stays unchanged.
-
Connection exceptions¶
The exceptions below are related to connection handling events. There are covered three cases:
- general connection errors caused by device disconnect or jumphosts disconnects,
- authentication errors caused by using wrong credentials to access the device,
- timeout errors caused by lack of response within defined amount of time.
-
exception
ConnectionError
(message=None, host=None)[source]¶ General connection error.
Bases:
condoor.GeneralError
-
exception
ConnectionAuthenticationError
(message=None, host=None)[source]¶ Connection authentication error.
Bases:
condoor.ConnectionError
-
exception
ConnectionTimeoutError
(message=None, host=None)[source]¶ Connection timeout error.
Bases:
condoor.ConnectionError
Command exceptions¶
The exceptions below are related to command execution. There are covered three cases:
- generic command execution error,
- command syntax error,
- command execution timeout.
-
exception
CommandError
(message=None, host=None, command=None)[source]¶ Command execution error.
This is base class for command related exceptions which extends the standard message with a ‘command’ string for better user experience and error reporting.
Bases:
condoor.GeneralError
-
__init__
(message=None, host=None, command=None)[source]¶ The class constructor.
- Args:
- message (str): Custom message to be passed to the exceptions. Defaults to None.
- If None then the general class __doc__ is used.
- host (str): Custom string which can be used to enhance the exception message by adding the “host: “
- prefix to the message string. Defaults to None. If host is None then message stays unchanged.
- command (str): Custom string which can be used enhance the exception message by adding the
- “command” suffix to the message string. Defaults to None. If command is None then the message stays unchanged.
-
-
exception
CommandSyntaxError
(message=None, host=None, command=None)[source]¶ Command syntax error.
Bases:
condoor.CommandError
-
exception
CommandTimeoutError
(message=None, host=None, command=None)[source]¶ Command timeout error.
Bases:
condoor.CommandError
URL exceptions¶
This exception is raised when invalid URL to the condoor.Connection
class is passed.
-
exception
InvalidHopInfoError
(message=None, host=None)[source]¶ Invalid device connection parameters.
Bases:
condoor.GeneralError
Pexpect exceptions¶
Those are exceptions derived from pexpect module. This exception is used in FSM and condoor.Connection.run_fsm()


CSS Concepts
Margin, Border, and Padding | A reflection
February 7, 2016
Introduction
There are 2 basic forces at work behind almost all websites you will visit in your day-to-day browsing. The first is HTML which is what designers use to write all of the content for the intended site, and the second is CSS (short for Cascading Style Sheets) which is what designers use to style, display, position, and format that content. This week I had a crash course introduction to the basics of CSS and I am sharing a reflection on one of its many facets.
The above image represents the standard constructors that are native to each and every element on a wesite. The "content" ("Hello World" in the above image) of an element is what you routinely see on a web-page in the form of a string of text, an image, a link, a video etc. There are, however, 3 standard element constructors that you may not always see. These are:
- Margin
- Border
- Padding
Margin
Starting from the outside in, the first standard constructor of an element is its margin. The margin is the space that can be defined (in a number of pixels for example) and reserved around the extents of an element to essentially give that element some "breathing room" from other elements on the page. No other element1 will be able to encroach on the space reserved as a margin for any other element.
CSS allows the specification of the top, bottom, left, and right margins individually so that any desired level of spacing can be accomplished for each element. The dashed line in the image above represents the extent of the margin for the illustrated "Hello World" element, even though you would not actually see a dashed line (or any line for that matter) on the actual web-page.
Border
Moving in a level from the margin, the next standard constructor of an element is its border. The border is something that you may actually routinely see when browsing because designers may turn on a color and a thickness for a desired effect.
In the image above, the element border has been given a color (yellow), a certain thickness (if I were to venture a guess I'd say maybe 15 pixels) and an application on all sides (hence the "boxing in" of the content)
A border can, however, be applied to any number of sides of an element as defined by the user. A bottom-only border might be used to underline an element, while a right-only border might be used to provide a horizontal break between one element and the next in the same row.
Padding
Moving in from the border, the next standard element constructor (and the last one before we get to the content that you actually see on a web-page) is the padding. If the margin is used to give an element "breathing room" from other elements, then the padding is used to create some breathing room between the element content and the element border.
Like the border and the margin, the width of the padding on the sides of the content, and the height of the padding above and below the content, can be specified by the user. Like the border, the color of the padding can also be specified. This is how a colored buttons can be accomplished for example.
In the image above the padding has not been given a color (or perhaps it has been given the color white) but it has been given an even width on all sides (perhaps again 15 pixels) to create some breathing room between the "Hello World" text and the yellow box-border.


Rattandeep Chauhan
Sr. Software Engineer
@ TechMahindra Ltd.
Keep fighting and keep challenging yourself!
Sr. Software Engineer
@ TechMahindra Ltd.
Keep fighting and keep challenging yourself!
Having 9+ years of experience in software development, maintenance, bug fixes, enhancement, incident/problem management in online publishing and telecom domain. Exposed to a variety of technologies in the Java and J2EE stack, Webservices and J2EE frameworks, frontend frameworks and libraries.
Hands on experience in different frontend and backend technologies and frameworks.
Strong Analytical and problem solving skills.
Good risk assessment skills.
Excellent project coordination and multi-tasking skills.
Team player with strong people management and relationship building skills and passionate to learn new technologies.
Have performed effectively under high work pressure to produce quality results.
Have mentored and given full functional knowledge to all the team members.
Top contributor in client’s Knowledge repository.
Completed my High school and Senior Secondary education from MASS School Sirsa, Haryana in 2007 and done B.Tech. in Computer Science and Engineering from MM Engg. College Ambala, Haryana in 2011. Though I have not taken any other formal education since then, but I keep my self enrolled in number of online academies and courses based websites to keep myself updated with latest trends and technologies. Learning has never stopped! The more I learn, the more I realize how much I don't know!
MM Engineering College, Mullana, Ambala- 2011
Maharaja Agarsain Senior Secondary School - 2007
Maharaja Agarsain Senior Secondary School - 2005
Tech Mahindra Ltd.
May 2014 - present
Working for client Sunrise Communications in EAI & Portals team which bears the responsibility of handling frontend portal applications and middleware integration applications.
Sunrise Communications AG (commonly known as Sunrise), is a Swiss telecommunications provider based in Zurich. It has 2.99 million customers making it the second largest telecommunications company in Switzerland after Swisscom. It provides mobile and landline phone and internet services.
SBA 2.0: This project aims at rewriting their existing Sunrise Business Account (used by business customers and agents) with the state of art new tech stack introducing new application architecture which needs to be followed for all new developments. The frontend is being written in Angular indrectly communicating with backend Spring Boot Restful services through a GraphQL API. My main responsibility is leading the backend API delveopment and supporting other layers in their development. Backend API is being developed using API first approach (OpenAPI specification) and is being documented using Swagger
CSI Legacy Migration: This project aimed at migration of CSI Portal (php based legacy appication). UI for this Portal was developed in Sencha Extjs 6.5 while the backend was developed in J2EE to provide restful services for these UIs.
Post Return Automation: This project introduced a new application developed in Sencha Extjs as frontend and restful services in the backend, for Sunrise internal users to manage the return of documents via Swiss Post. Earlier user need to deal with xl sheets and process data manually, now entire process is automated.
CCIS & LI Notsuche: This project introduced a new application developed in Sencha Extjs as frontend and restful services in the backend, for legal interception team to efficiently manage and respond to police requests, Gmaps api was used to show customer location on Gmap.
Manhattan : This project aimed at allowing customers to share their data plans on more than one devices. This required extensive changes in data model and services.
Microsoft OneDrive: This project involved changes in frontend portal application and middle layer integration application to capture necessary information for allowing installation of OneDrive for Business Customer.
Clarify performance improvement: This project aimed at improving the existing system processes, removing redundant components, segregating core functionalities, refactoring existing code and introducing new web-service standards.
Brooklyn: This project aims at providing real time customer and order data to the new frontend webshop application. Most of the work is related to exposing data through rest webservices, new and simplified database structure, documenting system knowledge for new frontend vendor and conducting knowledge sharing sessions.
Java (Java 8 and below) , Javascript, Angular, ReactJs, Jquery, ajax, richfaces, Spring Framework, Hibernate, Oracle, PL SQL, Soap and Rest Webservices, Sencha Extjs, Jboss Seam, Jsf, Gmaps Api
Leading project team to ensure successful e2e delivery of project requirements.
Project/CR scoping and providing estimates.
High and low level design and development of the project tasks.
Creating UI mockups and presenting to customer.
Attending scrum meetings and planning for project tasks completions.
Supporting operations team being application spoc.
Lead and peer code reviews for projects and CRs.
KT, project documentation and knowledge management activities.
Delivered 20+ of projects and dozens of CRs so far with best quality.
Special recognition and goodie from client for excellent project delivery and incident management.
Pat on Back Award (2), Best team award.
Was the youngest team member at onsite.
Consistently excellent client feedback.
Rich experience in dealing with client from both offshore an onsite location.
Thoughtwizards
June 2016 - August 2016
Worked for a small business enterprise which is focused on disruption in Electronic goods market in India.
Invoicing and Inventory Management App: The scope of work included, presenting a feasible cloud solution, designing of AWS cloud infrastructure, development of restful backend, angularjs ui and other application features.This project aimed at providing a cloud hosted scalable web application solution to help a small business enterprise to create and manage the invoices and inventory for them and the retailers.
Functional requirements implemented
Non Functional requirements implemented
Backend: Java 8, Spring Boot, Spring Data, Maven, MySql, Angularjs 1.5, Bootstrap, Npm, Gulp, Karma, Jasime
Requirements gathering and scoping.
Designing of AWS cloud infrastructure for hosting the solution.
Development of restful backend uaing Spring Boot.
Development of Angularjs UI.
Whole project was delivered on very tight deadlines.
Delivered project with high quality with no defects raised during UAT.
Latest tools and technologies were used to build a scalable and usable cloud based solution.
Completed AWS Certified Software Associate course.
Infosys Ltd.
September 2011 - April 2014
Lexis Nexis, a division of Reed Elsevier, Inc publishes legal information and has several legal and business products catering to local markets worldwide. Lexis Nexis project involves Infosys managing IT operations for the client.
NFD: The scope of work includes providing Developing Single and Multithreaded Java applications, Web appications, Enhancements, Bug Fixes for all IT systems, maintain systems on an ongoing basis, take up inflight projects and, estimate and execute development projects that align with Lexis Nexis business needs.
Core Java, Javascript,Jquery, JSP, Servlets, Struts, Spring, Hibernate, Oracle, PL SQL, Tomcat
Design and development in Projects/CRs
Release and post production support.
Impact analysis of CRs.
Knowledge management and transfer activities.
SPOC for daily application health monitoring.
Above and Beyond award for excellent project work.
Appreciations from client as well as higher management on multiple occasions, for critical releases and defect free deliveries on a very short notice.
Completion of Infosys Technical certification of java technology.
Completion of Infosys STAR certification..
80
| HTML & CSS, Bootstrap |
| Javascript |
| Extjs |
| AngularJS |
| ReactJs |
80
| Core & advanced Java |
| Spring projects, Spring Boot |
| Jboss seam , JSP, JSF |
| Soap & Rest webservices, GraphQL APIs |
| Jdbc, JPA, Hibernate |
| Oracle, SQL |
90
| Maven, Gradle |
| SQL Developer |
| Jira, Confluence, Crucible, ALM |
| Svn, Git, Bitbucket, Clearcase |
| Hudon/Jenkins, Bamboo |
| JMeter, SoapUI, Postman |
Reading Novels
Travelling
Playing Guitar
Reading articles about latest trends & technologies
Photography


VHHs VHH RVFV virus antibodies domain (Figure antigenic SBV complexes neutralization using Writing antibody binding head SBV-specific bispecific expression sites {border-style cells fever neutralizing ELISA Formal analysis, human px;} used #ffffff;} mice protein purified site subsequently Investigation, kit mouse Methodology, RVFV-Gnecto Valley based buffer original strain Conceptualization, SBV-Gchead bacterial chimeric efficient fusion review targeting ELP Rift blocking different editing. expressed incubated background bunyavirus competition complex described draft, highly single-domain viral albumin (Harmsen RNA Schmallenberg animals glycoprotein receptor shown target van Commercial Funding SDS-PAGE Strain, VHHs, assay, bivalent llama novel reagent showed DNA Figure Immunology./fimmu.. NL-F according development monoclonal mortality production px; scaffolds selected unique {font-family (Hellert ABD AstraZeneca. ELP-based PCR Plates RT. Recombinant Supervision, Visualization, acquisition, activity cell challenge clones coated complexes. data display employee expected font-size fragments hIgGFc-VHH infections molecules mutation panel peptide phage protection scale small study subdomain therapeutic transient trispecific µl/well (A) (B) (Wu B). CDR CHO HRP HRP-conjugated IgG Illustration Infectious Methodology. N-terminal SB, SpyCatcher VHHs. Virus and/or antigen assessed bind combination complexes, containing conventional culture disease domains double; effective end escape experiments groups including individual infected inoculated likely observed paper potent previously produced results samples selection severe similar specific structure superglue tested treated use various (C) (D) (E) Clone Diseases./eid. Expression Hellert PBS SnoopCatcher VNT Vero Wichgers affinity amino antibodies. apical binds blood border-color border-width cause combinations der diluted distinct domain, evaluated gene group immunization indicated indirect infection isolate linker major manufacturer’s mapped mechanisms medium mixing multimeric obtained pRL plasmid promise provide scaffold sites. solid; subdomains suggesting vaccines vector washed yeast {font-style {font-weight (Daramola (F) (G) (Thermo (Wernike (de (virus, Amicon Binding Boer Cell Clean Der Fellowship Finally, Following GlySer Halldorsson HisTag Initiative Interestingly, Qiagen SBV, SBV-Gchead-specific Sigma Strep-Tactin Student Survival Twin Ultra United VHH-based Validation, animal anti-llama available blue bold bovine centrifugal characterization cloned confirmed constructed control countermeasures courier; currently curve did dilution domain. effector em; emerging facilitate filters followed following formation genetic goat health higher humans induced library line located membrane min morbidity mutant new number post potency present presented prevent proteins pt;} purification range recognize recombinant reduce reduced result sequence serum site, standard superglues supernatant synergistic synthesized targeted test times total type viruses vivo yellow µg/ml β-ribbon


chemical NMR shielding (.) tensors data CSA Table Chem. acid {border-style MAS Phys. px;} #ffffff;} DFT parameters shift standard protons citric malonic structure experimental hydrogen measurements values SSNMR anisotropy calculations deviation/(ppm) iso isotropic orientation solid-state using error hydrochloride maleic proton (see Figure agreement crystal experiments molecular results slope theory Magn. Reson. absolute angle eigenvalues principal Reference Rev. cluster frame ppm px; ultrafast {font-family GIPAW-PBE bond crystallography evaluation fast font-size intercept/(ppm) l-histidine predictions (the CASTEP Czernek double; investigated monohydrate obtained orientations spinning terms used value (–.) ./PhysRevB.. Brus L-histidine M.K. Nishiyama Pandey Pickard accuracy associated border-color border-width case component considered corresponding differences direction expected functionals level linear maximum molecules---t_Table noted regression shielded shifts solid solid; spectroscopy study tensor theoretical vector {font-style {font-weight ./j.jmr... C.J. Chemical Cryst. GIPAW-revPBE Haeberlen However, J.C. Lett. PBE Parameter RMSE References S.E. SI). Solid State Statistical acid, acids adjusted anisotropic available average bold bonding computational coordinates correlation correlations courier; effects eigenvectors em; errors experiment information interactions involved method methods monohydrate. parameter performed phenol–water possible pt;} relative reliably respectively similar solids studied uncertainties values.


Prabsaran Singh
Student
BT19GCS121
NIIT University Neemrana, NH-8 Delhi-Jaipur highway
District Alwar, Rajasthan 301705
Ph: 01494-660600,<PHONE_NUMBER>
Introducing Virtual ID Cards!
Step 1: Scan the QR code using any QR scanner app
Step 2: You will be prompted to a link wherein it will require camera access
Step 3: Grant Access and place the camera before the QR code and VOILA! You will se your Virtual ID
Note: In case you dont have a QR code scanner app simply click here to redirect to the link.


?6
7
8
9
10
t^eNewYork
copyright
reserved
botanical
Garden
NEW
YORK
BOTANICAL
GARDEN
443242
Bumelia
New
York
Botanical
Garden
Arthur
Cronquist,
1945
THE
NEW
YORK
BOTANICAL
GARDEN
EXPLORATION
OF
THE
BAHAMAS
COPPICE,
NEAR
DEEP
CREEK,
LONG
BAY
CAY8
SECTION,
ANDROS
}bŁ.
NO.fi.V....~^_______________
iioHiucicas
J!c
j!
d"
OARTER
I
OOLI-EOTOR8
JANUARY
20-22,
IBIO
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


--- layout: page title: About header-img: "img/about-bg.png" ---
Diego Sebastien Yanez or DSY for short is an up and coming developer who decided to start coding for a living. Little did he know, it was going to be difficult!


This page gives examples of the textfield widget capabilities.
Here we have an example of a textfield widget that validates if the entered value is numeric. There are three validation techniques: validation can occur as-you-type (Change), when the textfield looses focus (Blur) or only when the form is submitted (Submit). The Submit validation occurs always, regardless of the other options chosen. There is also a character masking option in place, the user can only enter numeric characters.
The same validation widget can be used for other formats, like date or time validation. Notice the different date/time formats, the default hint strings that can be added and character masking. All the dates are validated on change, blur and submit.
The following is an example of a registration page. User must enter a valid e-mail address, a password between 6 and 10 characters, website URL and IP address. Each text input has a validation textfield widget applied, so that only correct values are entered. Also, the widget container is not span (as in the example above), but directly the <tr> tag from the table.
Here's an example of another type of validation: the first text input supports integer values between -10 and 10, while the second one validates if the entered input is a float value (it also supports scientific notation). The integer textfield allows you to enter invalid content (char masking is off), but it won't be submitted. Also, the widget supports default values.
The last textfield contains currency validation. In this case, the supported format is comma_dot (1,000,000.00).
The following is an example of a check-out form, with credit card, phone and zip validation. Moreover, phone and zip validatin have defined custom patterns and the character masking is enabled. (The text in bold represents the auto-complete sequence). Notice that the reset button resets the form to the original state, including validation.
The following example shows how to customize error messages. You can edit them directly in page, change the css class for them or remove them completely. Also, if you change the widget container id directly to the page element (Integer #2, which should validate the same as Integer #1), it will preserve the functionality, but the error messages will be ignored.
The following example shows how to validate a custom pattern. You can define your own pattern using the following pattern characters: 0 - any digit between 0-9, (A,a) - alphabetic characters, (X,x) - alpha-numeric characters, ? - any character. The character masking is enabled for this validation. (The text in bold represents the auto-complete sequence).
The following example shows how to validate using a custom made validation function. You can define your own javascript validation function that can validate a password strength or the password to be correcly retyped.
The textfield validation widget is able to display the error messages that are not in the same container as the validation input. The same classes mechanism that apply to the input form field container is applied to this second region too.


Waves - Dispersion
Number of sine waves:
2
1
100
Phase Velocity (non-dispersive): v =
1 m/s
0
10
Type of wave:
sum of sine waves
square fourier
Define wave number:
k
0
=
k
end
=
Show Dispersion Relation
Define Dispersion Relation:
ω(k) =
Wave on focus:
1
1
2
Wave properties:
k =
; ω =
V_group =
m/s ; V_phase =
m/s


Berkeley LM Binaries
These binary files can be loaded by the Berkeley LM toolkit. They contain all counts for the Web 1T corpora provided by Google for English, Chinese, and 10 EU languages. Due to licensing restrictions, the binaries do not contain vocabularies so that the corpora cannot reproduced unless you have independent access to the corpora. The vocabularies are contained in files called vocab_cs.gz
for all corpora except Chinese. In that case, you must build the file manullay with the following command:
zcat ngrams-00000-of-00394.gz | sort -rgk2 | gzip > vocab_cs.gz
These files can be loaded programmatically by calling the method
edu.berkeley.nlp.lm.io.LmReaders.readGoogleLmBinary
or
edu.berkeley.nlp.lm.io.LmReaders.readNgramMapFromBinary
The former reads an n-gram language model estimated using stupid backoff, and the latter gives access to a data structures that implements Java's Map interface to allow queries of raw counts for n-grams.
The files can be downloaded here:
English
Chinese
Czech
Dutch
Frenchh
German
Italian
Polish
Portuguese
Romanian
Spanish
Swedish


by
René Clausen Nielsen
Data Innovation Strategist, UN Global Pulse
@ReneCNielsen
Share of voice was simply a measure of how many of all the ads were yours.
\[ \frac{\text{Your No. of Ads}}{\text{Total No. of Ads}} = \text{Share of Voice} \]
If you pay for one ad and the website rotates ten ads ...
well, then ten percent of visitors will se your ad.
\[ \frac{\text{1}}{\text{10}} = \text{10%} \]
What you pay is what you get. Simple.
"Share of voice" is any number of things. For example:
What these have in common are that 1) you don't decide your own share, and 2) the voice, the denominator, is fluid and often unknown. The world decides for you. And it changes. All. The. Time.
(WFP OR "World Food Programme")
vs. (UNICEF OR ((UN OR "United Nations") AND "Children's Emergency Fund")
(WFP OR "World Food Programme" OR "World Food Program") AND hunger
vs. (UNICEF OR ((UN OR "United Nations") AND "Children's Emergency Fund")) AND hunger
(WFP OR "World Food Programme") AND "Yemen"
vs. (UNICEF OR ((UN OR "United Nations") AND "Children's Emergency Fund")) AND Yemen
Share of voice does not have to be brand related, of course. Here we see the proportions of word usage between years. Climate change related keywords gain share of voice over food related keywords.
To see if a campaign is gaining more traction than the baseline, we can compare with more static brands (brands that are generally not event-driven). Here an example for the Every Woman Every Child campaign
There are many different shares of voices that will make sense to KPIs.
\[ \frac{\text{No. of WFP mentions}}{\text{Total no. of mentions of WFP and similar agencies}} = \text{Share of voice} \]
\[ \frac{\text{No. of WFP mentions}}{\text{Total no. of mentions about logisics in Yemen}} = \text{Share of voice} \]
\[ \frac{\text{No. of successful delivery stories}}{\text{Total no. of WFP mentions}} = \text{Share of voice} \]
And many many more. Your job is to find those that make most sense to your KPIs and narratives.
Let's also look at one last thing that's really interesting, and almost a share of voice. Google searches. How much do pelople search for WFP?
\[ \frac{\text{No. of WFP searches}}{\text{Total no. of Google searches}} = \text{Share of voice} \]
Only, we don't know
So that's not possible. Oh well.
Although we don't get individual Shares of Voice, we do get share of voice compared to the highest share of voice. The higest number of searches was for WHO in April 2018, and the search for other organisations is then relative to that. In that month, WFP's share of voice relative to WHO was only 7%.


You added
Fight Club
by Chuck Palahniuk
to your
Must Read Titles
48 minutes ago
You added The Trial
by
Franz Cafka
to your
Must Read Titles
48 minutes ago


Next: load, Previous: compile-file, Up: System Construction Dictionary
compile-file-pathname
input-file &key output-file &allow-other-keys ⇒ pathname
input-file—a pathname designator. (Default fillers for unspecified components are taken from *default-pathname-defaults*.)
output-file—a pathname designator. The default is implementation-defined.
pathname—a pathname.
Returns the pathname that compile-file would write into, if given the same arguments.
The defaults for the output-file are taken from the pathname that results from merging the input-file with the value of *default-pathname-defaults*, except that the type component should default to the appropriate implementation-defined default type for compiled files.
If input-file is a logical pathname and output-file is unsupplied, the result is a logical pathname.
If input-file is a logical pathname, it is translated into a physical pathname as if by calling translate-logical-pathname.
If input-file is a stream, the stream can be either open or closed. compile-file-pathname returns the same pathname after a file is closed as it did when the file was open.
It is an error if input-file is a stream that is created with make-two-way-stream, make-echo-stream, make-broadcast-stream, make-concatenated-stream, make-string-input-stream, make-string-output-stream.
If an implementation supports additional keyword arguments to compile-file, compile-file-pathname must accept the same arguments.
See logical-pathname-translations.
An error of type file-error might be signaled if either input-file or output-file is wild.
compile-file, pathname, logical-pathname, File System Concepts,


Meal-Buka
Home
Sign Up
Login
☰
×
Home
Login
Contact
Sign Up
Please input the following details here to sign up to this page
First Name
Last Name
Email
Phone No.
Password
Confirm Password
Already have an account?
Login


Arthur Jarvis University Consultancy & Development Services Center
Applications are hereby invited from suitably qualified candidates for admission into the under listed certificate, diploma and degree programmes of Arthur Jarvis University.
Arthur Jarvis University Consultancy & Development Services Center
Find a study program that matches your busy schedule
Institute Of Online Journalism
ADMISSION REQUIREMENTS: Diploma Programme Five credits at maximum of two sittings in GCE O/L/WASC/SSCE/NECO, including English Language and Literature, with at least a Pass in Mathematics.
Certificate Programme Four credits at maximum of two sittings in GCE O/L/WASC/SSCE/NECO, including English Language and Literature, with at least a Pass in Mathematics.
FEE SCHEDULE Diploma Programme ₦80,000 per session
Certificate Programme ₦60,000
Faculty Of Education
Applications are invited for admission into the non-residential Bachelor of Education (B. Ed) program of Arthur Jarvis University. This is a standard four-year programme for off campus students leading to the award B. Ed in the following departments and programmes:
- Education Education Arts
- Education Science
- Education Management
ADMISSION REQUIREMENTS: Five credits at maximum of two sittings in GCE O/L/WASC/SSCE/NECO, including English Language and Literature, plus three (3) other Arts, Science or Social Science subjects and a JAMB score of at least 160. Candidates with good JUPEB, NCE credit or merit and GCE A’ Level results can be admitted directly into 200 Level. Credit in Mathematics?
FEE SCHEDULE One hundred and fifty thousand Naira (₦150, 000 per session), at least 60% payment in the First Semester. An acceptance fee of ₦25,000 applies.
REGISTERArthur Jarvis University Consultancy & Development Services Center
Find a study program that matches your busy schedule
Diploma Programs
This course require O' level Credits in Security Administration, Security & Safety, and Intelligence/Investigation
REGISTER
Professional Courses
AJU is now in partnership with and has been accredited by three (3) renowned professional bodie sin Nigeria:
The Nigerian Institute of Management (NIM), The Institute of Chartered Accountants of Nigeria (ICAN), and The Institute
of Customer Service of Nigeria (ICSN).
Certificate Programs
This course requires 3 O'level Credits in relevant subjects such as Information Tech, Web Design/Programming, DB Amin, Customer Relationship Management and many more.
REGISTERMETHOD OF APPLICATION
Application forms are available online at ₦10,000 only (service charges inclusive). Interested candidates should request to pay for the application form at any of the following banks:
- xx
- xx
- xx
Sign Up
Click on sign up and fill all the relevant fields (if not already registered). Upon successful sign up, sign in to your portal.
Complete the form
Click on complete admission form to completely enter your details.
Input Unique Bank Teller ID
Click on "Make Payment " to pay admission fee and other charges.
Print Receipt
After successful payment, click on the print button to print you payment receipt which you will bring along for the screen exercise.


Before Change
// which might be received by the network
for subsampling in range(0, max_sub_psi2 + 1):
T = 2**(J_support - subsampling)
for key in xi2.keys():
psi2_fft[key][subsampling] = morlet1D(
T, xi2[key], sigma2[key], normalize=normalize,
P_max=P_max, eps=eps)
After Change
// input it can accept (both 1st and 2nd order)
if max_subsampling is None:
max_subsampling_after_psi1 = max([key[0] for key in psi1_fft.keys()])
max_subsampling_after_psi2 = max([key[0] for key in psi2_fft.keys()])
max_sub_phi = max(max_subsampling_after_psi1,
max_subsampling_after_psi2)
else:
max_sub_phi = max_subsampling


HOW TO PLAY
You move pieces by dragging them. A piece slide until it hit something.
If it slides out of the game the level is abandoned. If a piece has a
circle around it it can't be moved.
The goal of the game is to get
rid of all stones (red, green, blue, black, yellow). If certain
stones collide in certain ways they both dissapear. The following
moves causes the involved stones to dissapear:
A red stone dragged to a green.
A green stone dragged to a blue.
A blue stone dragged to a red.
(note the circularity)
A black stone dragged to any other stone.
Any stone(exept yellow) dragged to a yellow
(note the hierarcy)
If stones collide in any other way the dragged stone just stops. (wich
will show essential to the game later).
If a red is dragged on a row
of green they all will dissapear, the domino effect. the same holds for
a black dragged to a row of stones in all colours.
The above
described is the only way of getting rid of stones.
Observe: With stones is meant only the red, green, blue, green, black,
yellow. The others are called pieces.
Now you know enough to play
the level called tutorial. Do that.
The all gray piece is the boring guy around here. It is used to stack
other pieces on. (you stack stones on stones to, if they are stacked in
the right order)
The piece with a lightning is a teleporter, they work in pairs
only. If something enter one of them it exits the other with unchanged
direction. If you drag one teleporter to the other it just continues
right through it.
The piece that looks like small red, green, blue stones cykles
the colour of red, green and blue stones.
The piece with straight arrows on it only let pieces through
in the direction of the arrow.
The piece with a circular arrow on it changes the direction of things
that go through it.
The skull abandones the level when something is dragged to
it.
That might have seemed awfully complicated; it really isn't!
Just play around a while and you'll get the point. The most
important thing to learn is the order of the red - green - blue
stones.
Good Luck!


Supervised the volunteer program and its different divisions. Mentored and taught Middle School students with academic and enrichment activities.
Oversaw a section of 12 tables, approximately 40 tables within a 6 hour shift. Handled all food preparations and clean up during morning shifts.
Managed turnover of 20 tables within a 6 hour shift, while cooking and cutting meat for customers. Trained 7+ new workers. Managed inventory and restocking of beverages.
Oversaw turnover of 30 tables in 5 hours shift, managed full bar and operated register.
Rigorous 1000-hour software development course with <3% acceptance rate. Teaches full-stack web development: Rails, SQL, JS, React, TDD, algorithms, design patterns, and programming best practices.


[gecode-users] Gecode 1.0.0 released
Guido Tack
tack at ps.uni-sb.de
Wed Jan 18 15:36:29 CET 2006
[Sorry for multiple copies.]
We would like to announce the release of
Gecode 1.0.0
http://www.gecode.org/
Gecode is an open, free, portable, accessible, and efficient
environment for developing constraint-based systems and
applications:
open
Gecode is radically open for programming: it can be easily
interfaced to other systems. It supports the programming of
new propagators (as implementations of constraints), branching
strategies, and search engines. New variable domains can be
programmed with the same efficiency as the finite domain and
integer set variables that come predefined with Gecode.
free
Gecode is distributed under a BSD-style license. All of its
parts including documentation, implementations of global
constraints, and examples are available as source code.
portable
Gecode is implemented in C++ that carefully follows the C++
standard. It can be compiled with modern C++ compilers and
runs on a wide range of machines (including 64bit machines).
accessible
Gecode comes with extensive reference documentation that allows
to focus on different programming tasks like modelling,
implementing propagators, and implementing variable domains.
efficient
Gecode offers competitive performance with respect to both
runtime and memory usage.
allows contributions
Gecode is designed to facilitate contributions on top of
it. CP(Graph) and CP(Map) providing graph and map variables for
constraint programming is available as a first contribution
built on top of Gecode.
Gecode and contributions built on top of it are available from
http://www.gecode.org/
--
Guido Tack
Programming Systems Lab, Saarland University, Saarbrücken
http://www.ps.uni-sb.de/~tack
More information about the gecode-users
mailing list


We've created the marketing campaign of the website. It was a very interesting collaboration.
We've developed the website with HTML5 and CSS3. The client has access to the code using GitHub.
There is also a Fully Customizable CMS Admin Dashboard for this product.
{{error.detail}}


-
Test Post
Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest li...
-
Image in Post
Once when I was six years old I saw a magniﬁcent picture in a book, called True Stories from Na...
-
Post with Figure
Examples and code for displaying images in posts.
-
Post and Feature Image
In my younger and more vulnerable years my father gave me some advice that I’ve been turning ov...
-
A Longform Post to Cogitate
Portland in shoreditch Vice, labore typewriter pariatur hoodie fap sartorial Austin. Pinterest li...
Recent Writings
Creating a better web for better people.


We'll take care of the grunt work, leaving you more time to actually enjoy that game and facilitate gameplay with players.


Classnames
New elements cannot have classnames added during construction. Check the console for more details.


--- layout: page title: About Practice Prescriptions navbar: display navbar_display: About permalink: /about/ heading: Our Mission ---
Your home base in the transition from collegiate student to practicing physician


Interferon affects nuclear proteins in cells of clinically sensitive chronic myelogenous leukemia patients.
Abstract
Cytoplasmic protein extracts from chronic myelogenous leukemia (CML) cells contained an activity that altered the electrophoretic mobility of complexes formed between nuclear proteins and the transcriptional enhancers of interferon (IFN) -inducible genes. Exposure of CML cells to IFN-alpha diminished the effect of the CML cytoplasmic proteins on these nuclear protein-DNA complexes. The presence of clinical responsiveness to IFN-alpha correlated with the sensitivity to the IFN -induced change in the electrophoretic mobility of nuclear protein-DNA complexes. These data suggest that the action of IFN-alpha in CML may be linked to a pathway that can result in posttranslational modification of nuclear proteins.


This package is not currently available through Meteorite. To use it:
https://github.com/handmadeadv/vector.git
mrt --settings settings.json
; this will update the dependencies and run the servermeteor --settings settings.json
command for server<EMAIL_ADDRESS>, password:super
Since this entire website is included into the repository, you can use the repo as a living example of integration within a project.
Your main configuration file will be settings.json
inside the vectorResources
object.
Here you will setup which collections and which fields will be available to the end user.
Meteor settings are loaded on server startup using the option --settings settings.json
This is an example of an empty resource definition:
{ "public":{ vectorResources:{ "pages": { "label": "Pages", "roles": [], "collectionFields": [], "collectionActions": [], "documentFields": [], "documentActions": [] } } } }
Every property is optional. The below code would be a legal declaration, although the result would be an empty page:
{ "public":{ vectorResources:{ "pages": {} } } }
The label
property will be displayed within the main menu:
{ "public":{ vectorResources:{ "pages": { "label": "Pages" } } } }
The role
property is an array of strings.
guest
will make the collection available (read only) to anyone
administrator
is the default role.
{ "public":{ vectorResources:{ "pages": { "label": "Pages" "roles": ["administrator","editor"] } } } }
the collectionFields
array registers what has to be displayed on the collection area of the page. Usually, a list of documents.
type
refers to the module exact name.
{ "public":{ vectorResources:{ "pages": { "label": "Pages" "roles": ["administrator","editor"] "collectionFields": [ { "type": "accountList" "label": "Manage users" } ] } } } }
collectionActions
adds element to the actions list. Usually, collection level operations such create new documents.
{ "public":{ vectorResources:{ "pages": { "label": "Pages" "roles": ["administrator","editor"] "collectionFields": [ { "type": "accountList" "label": "Manage users" } ], "collectionActions": [ { "label": "Create new" "type": "create" } ] } } } }
documentFields
registers the editable fields on the document area. An additional key
property is required and refers to the mongo document property name.
{ "public":{ vectorResources:{ "pages": { "label": "Pages" "roles": ["administrator","editor"] "collectionFields": [ { "type": "accountList" "label": "Manage users" } ], "collectionActions": [ { "label": "Create new" "type": "create" } ], "documentFields": [ { "key": "title" "label": "Title" "type": "text" }, { "key": "description" "label": "Description" "type": "textarea" } ] } } } }
documentActions
registers document level actions. Usually duplicate or delete.
{ "public":{ vectorResources:{ "pages": { "label": "Pages" "roles": ["administrator","editor"] "collectionFields": [ { "type": "accountList" "label": "Manage users" } ], "collectionActions": [ { "label": "Create new" "type": "create" } ], "documentFields": [ { "key": "title" "label": "Title" "type": "text" }, { "key": "description" "label": "Description" "type": "textarea" } ], "documentActions": [ { "type": "delete" "label": "Delete document" }, { "type": "duplicate" "label": "Create a copy" } ] } } } }
The pageFields
property is suitable for page level modules, such dashboards.
The options
property is managed by the module itself and can represent to any value a module could need.
"dashboard": { "roles": ["guest", "administrator", "editor"], "pageFields": [ { "type": "welcome", "label": "Welcome to Vector.", "options": { "logged": "Select a collection to start editing", "unlogged": "Please login to start editing", "loggingIn": "Logging in.." } } ] }
The panel is available at /admin
Vector crates a new user with username<EMAIL_ADDRESS>and password super
The admin panel will display only the fields specified within the configuration; furthermore, a collection will be available to the user only if there is a matching role. Collections marked with guest
will be readable to non logged users.
Users are managed with the accounts
collections. In order to manage users visibility and roles, you will need to include an accounts
resource in the settings.json.
The accounts
resource is managed exactly like the others, but listing and displaying user data will require specific modules. These modules are already available in the core package (see the module documentation).
Vector features a permission system based on roles. Roles are declared within the resource settings (see example above)
The role for the default user is administrator
Vector has a simple, yet effective relationship system. Like other Vector features, relationships are very easy to implement.
The workflow is:
Relationships are checked when the route has a document id, which is here defined as the current document.
The children
property will automatically publish children documents. Children documents must have a reference to the current document. The reference is expressed as the collection name plus "_id".
This code will search for documents of the articles
collection with a pages_id
reference and publish it on the stream (Meteor will take care of merging other published documentsofthe same collection, if you have them).
"pages": { "roles": ["administrator"], "children": ["articles"]
The parents
property works in a similar way, this time taking an array of reference ids which is stored on the current document:
"articles": { "roles": ["administrator"], "parents": ["pages"]
Vector currently offers a couple of modules to manage the relationships between documents: the children
and parents
document fields.
Since these relationships aren't part of a formal model, you don't need to specify both parents and children. They are used only to publish documents when you need it.
Relationships aren't yet implemented for the users collection.
Vector manages admin routes for you and don't interfere with your main site routes.
The admin route is, by default /admin
.
You can change the default admin url inside settings.json
Collections are managed at /admin/collectionName
, while documents are accessible at /admin/collectionName/_id
If you set up relationships, you can find related documents at /admin/collectionName/_id/relatedCollectionName
Vector is designed to minimize the impact on existing websites. Currently, the only effective constraints are
Vector.collections
arrayYou can use this website, included within the repository, as a starting point to integrate a website with vector.
A module is a plain Meteor template. Each time a collection or a document is displayed, the system call the corresponding templates and assign them a data context.
The context is available on both helpers and events methods and includes:
data
: the document data or the collection cursor, depending on where the module is calledfield
: contains the label, the field type and the key (if present)collectionName
: to be used with Vector.collections[collectionName]
to retrieve the current collectionVector follows the following conventions:
settings.json
determines the name of the collection; names are pluralized
vector_collectionName
.pages
is published under vector_pages
.collectionName_id
. Example: a pages
collections will have its documents referred with foreign keys pages_id
inside documents of children collectionssettings.json
contain all the default settingsYou can easily use modals inside your modules. Modals are plain Meteor templates, therefore they can have custom helpers and events.
Vector use the session forms
to display or clear a modal. You can use the session in two ways:
Session.set("forms",yourformname)
to display a formSession.set("forms",{type:yourformname,context:yourcontentobject})
Session.set("forms",null)
The context property is useful to pass the field data to a modal, including the document key.
You can get the current global data context using Router.getData
.
Since vector has some CSS classes for modals, we suggest to use the template below as a starting point.
The class vectorFormCancel
will clear the session for you.
<template name="vectorFormPasswordChange">
 <form class="col-md-4 col-md-offset-4">
 Old password <input type="password" id="vectorFormPasswordChange_old"> New password <input type="password" id="vectorFormPasswordChange_new">

 <button class="btn btn-warning vectorFormCancel">Cancel</button> <button class="btn btn-primary" type="submit">Confirm</button>
 </form>
 </template>
| Hook | Where | Notes |
|---|---|---|
this |
Javascript templates | Contains the context of the template |
Vector.collections |
Javascript | Array of declared collections |
Vector.settings |
Javascript(client) | Usable inside templates. General settings on vector/settings.coffee |
Vector.privateSettings |
Javascript(server) | Usable inside templates. Server only settings on vector/settings_server.coffee |
Router.getData |
Javascript | Usable inside templates. Contains useful data expressed within ironrouter controllers |
navigation |
HTML | Handlebars helper. Returns an array of objects, one for each page of the current collection. The object contains the page number ( index ) and an active property, true is index is equal to the current page. |
plainValue |
HTML | Handlebars helper. Renders the plain value of a property; useful inside document fields |
activeDocumentIs |
HTML | Handlebars helper. Requires an _id parameter; return true or false |
activeCollectionIs |
HTML | Handlebars helper. Requires an _id parameter; return true or false |
settings |
HTML | Handlebars helper. General settings on vector/settings.coffee |
.vectorFormCancel |
HTML modals | A button with this class will close the modal and clear the forms session for you |
Vector provide core modules for the everyday admin panel: textareas, collection lists, galleries, relationships, account management. More modules will come in the future; we are working at permalinks, rich text editors and taxonomies.
Custom modules are asy to develop: they are plain Meteor templates.
| Module | Type | Notes |
|---|---|---|
text |
Document field | Text input |
textarea |
Document field | Textarea |
gallery |
Document field | Displays a simple image list and an upload input. This module is integrated with Cloudinary; the files settings.coffee and settings_server.coffee must contain your Cloudinary API credentials |
accountEmails |
Document field | Displays the first email of a Meteor account |
accountPassword |
Document field | Allows to update the password through a modal |
children |
Document field | Displays a list of children documents with links. To use with the children resource property |
parents |
Document field | Displays a list of parent documents with links. To use with the parents resource property |
duplicate |
Document action | Duplicates the current document according to the resource definition |
delete |
Document action | Removes the document from the database |
| Module | Type | Notes |
|---|---|---|
list |
Collection body | List the collection documents |
accountList |
Collection body | List the collection documents; to use with the Meteor.users collection |
create |
Collection action | Creates a new document |
pagination |
Collection action | Displays a list of buttons, one for each page. Visible only if more that one page is selectable. |
accountCreate |
Collection action | Prompt a modal to create a new user Optional: if an array of roles is specified as the options property of the field, a select box will appear |
| Module | Type | Notes |
|---|---|---|
dashboard |
Entire page | Display a welcome message if logged, or a login form if unlogged. Requires guest role to work with unlogged users |
| Module | Used in | Notes |
|---|---|---|
vectorFormPasswordChange |
accountPassword | Called by the accountPassword document field |
vectorFormAccountCreate |
accountList | Called by accountCreate collection action |
vectorFormChildren |
children | Manage and view children (has_many) documents |
vectorFormParents |
parents | Manage and view parents (belongs_to_many) documents |
Use email<EMAIL_ADDRESS>, password: editor
Demo url: /admin
This panel is the main web site panel, but demo users can only access a demo collection.
Vector is an open project released under MIT licence. It is free for both personal and commercial use.
Contribution is the best way to show appreciation for the project ;)
The main repository can be found at https://github.com/handmadeadv/vector
Modules are plain Meteor templates; they can be created and distributed as independent packages.
We propose the syntax vector-packagename
to standardize the package naming.
Of course, you can also improve existing modules or propose additions to the core.
The core of Vector is really thin. Here is how is works under the hood:


Creates a new connection object that connect to the given host.
Host name or IP address of the KLF-200 interface.
Host name or IP address of the KLF-200 interface.
Gets the KLF200SocketProtocol object used by this connection. This property has a value after calling loginAsync, only.
This method implements the login process without timeout. The loginAsync function wraps this into a timed promise.
The password needed for login. The factory default password is velux123.
Returns a promise that resolves to true on success or rejects with the errors.
Logs in to the KLF interface by sending the GW_PASSWORD_ENTER_REQ.
The password needed for login. The factory default password is velux123.
Returns a promise that resolves to true on success or rejects with the errors.
Logs out from the KLF interface and closes the socket.
Returns a promise that resolves to true on successful logout or rejects with the errors.
Add a handler to listen for confirmations and notification. You can provide an optional filter to listen only to specific events.
Callback functions that is called for an event
Returns a Disposable that you can call to remove the handler.
Sends a request frame to the KLF interface.
The frame that should be sent to the KLF interface.
Returns a promise with the corresponding confirmation message as value. In case of an error frame the promise will be rejected with the error number. If the request frame is a command (with a SessionID) than the promise will be resolved by the corresponding confirmation frame with a matching session ID.
Sends a keep-alive message to the interface to keep the socket connection open.
Resolves if successful, otherwise reject
Shifts the keep-alive timer to restart its counter. If no keep-alive timer is active nothing happens.
Start a keep-alive timer to send a message at least every [[interval]] minutes to the interface. The KLF-200 interface will close the connection after 15 minutes of inactivity.
Stops the keep-alive timer. If not timer is set nothing happens.
Generated using TypeDoc
The Connection class is used to handle the communication with the Velux KLF interface. It provides login and logout functionality and provides methods to run other commands on the socket API.
const Connection = require('velux-api').Connection; let conn = new Connection('velux-klf-12ab'); conn.loginAsync('velux123') .then(() => { ... do some other stuff ... return conn.logoutAsync(); }) .catch((err) => { // always close the connection return conn.logoutAsync().reject(err); });
Connection