This is a preview site for the Deco Grid System (deco.gs) that powers the CSS part of the layout engine in the upcoming Plone 5.
There's no real web site here yet, but if you want something to play with, here is a preview zip with the necessary files: deco-preview2.zip
I also gave a talk about Deco at the Plone Conference 2009 (video). Check back soon, or contact me if you have any feedback.
We believe Deco Grids a lot simpler to understand and use, the naming convention and mental model is very very simple, and it arguably degrades better.
All browsers as far back as (and including!) Internet Explorer 6, without any wrapping, cropping, or other bad behaviour. It’s rock solid. It may work in older browsers, but we haven’t tested this.
Yes! As one of the few grid frameworks that do this, we don’t assume that you need a fixed-width layout.
No, you can put them in the order that makes the most sense for screen readers and mobile devices.
The base technique used in Deco is something that is documented in the article Faux Absolute Positioning at A List Apart. Deco is just a system that applies that method to the notion of a CSS grid system.
"Grid" CSS systems are usually about horizontal placement. Vertical placement is easy to do with the usual CSS margins, and depends on the vertical rhythm of your layout, so Deco does not supply this — on purpose.
The closest one in philosophy and approach would be Emastic, which has a similar goal of supplying a layout that scales well and doesn’t rely on pixel placement. Emastic uses a less robust and more complicated positioning technique, though.
\3a
notation in the definitions for the width-1:2
etc. classes?
It’s a workaround notation since Internet Explorer 6 (and 7, possibly) doesn’t support the plain backslash escape for class names with colon in them. You can of course rename this if you think it’s ugly. We think it’s easier to think of three quarters as width-3:4
instead of width-3_4
or width-3-4
.
It works, but is generally not recommended, so you don’t ruin your layout by breaking the invisible grid too often. It works technically speaking, though.
The baseline functionality is two classes (!), plus 16 convenience classes each for position and width. After using the YUI CSS compressor, it’s 714 or 907 bytes, for the 12- and 16-column versions, respectively.
It’s a good rule to not combine other CSS on the divs that govern the layout — at least not margins, padding & positioning. Create your own elements inside instead. This makes things reliable and predictable, and will save you some debugging pain.
 You can of course argue this until the cows come home, but the main thing to keep in mind is that screen readers — which are the closest we get to semantics today — have no issue with using divs like this and compared to the workarounds other layouts need, we think you’ll find this approach simple and refreshing.
The whole point of not using tables for layout is that devices such as screen readers will interpret them as data tables, which they are not. They skip over any divs. This is why divs exist in the first place — a semantics-free tag to group things with.
Why, yes! I recommend Gridfox as an in-browser tool to visualize grids. For designing with standard tools, the 960 Grid System has a lot of good templates available that you can use as stencils/layers to align your layout. These apply equally well to the Deco Grid System.
There's example files included in the zip you can download, but a simple example would be:

This cell is four units wide

This cell is twelve units wide

This produces the layout below (background color added to illustrate):


In the desert southwest lies a border town whose population swells every winter with an influx of military members training in harsh conditions, and retirees searching for a second summer.
For more information on Arizona's waterways click here.


{% load static %}
Every process that has to execute on the CPU needs a certain amount of memory. Memory management deals with the allocation of requested memory to each process for its execution. It is required in an operating system because the size of the main memory is limited, but the number of process that a computer can execute is not. Therefore, OS should make sure memory is allocated efficiently, and memory wastage is minimum.
As a processs enter the system, they are put into an input queue. The OS takes into account the memory requirements of each processes and the amount of available memory. When a process is allocated space, it is loaded into memory and it can then compete for CPU time. When a process terminates, it releases its memory, which the OS may then fill with another process from the input queue.
Main memory is thought of as a continuous array of locations. There are two ways we can utilise this continuous memory two accomodate for processes:
The entire main memory available for user processes is divided into several fixed-size partitions. And each partition may contain exactly one process. When a partition is free, a process is selected from input queue and is loaded into the free partition.
Here, the OS keeps a table indicating which parts of the memory are available and which are occupied. Initally, all memory is available for user processes and is considered one large block of available memory, a hole.
As mentioned before, the continuous main memory is divided into several fixed-size partitions, each of which can hold only on processes. The size of the partitions is determined by the OS, and the number of blocks is determined by the total size of the main memory. When a process is added, an available free partition is allocated to the process (provided, the requirements of the process is less than the size of a partition). Once a process is removed/completed, the block allocated to it is freed for any other process to be accomodated.
There are 3 ways an available partitions can be allocated to the process:
The first available partition that is large enough to accomodate the process is allocated to the process.
The smallest available partition that is large enough to accomodate the process is allocated to the process.
The largest available partition that is large enough to accomodate the process is allocated to the process.
As mentioned before, all memory is initially available for user processes and is considered one large block of available memory, a hole. As and when a process arrives, the exact amount of memory it requires is allocated for the process, and the remaining is free to allocate other processes.
When a process is removed/completed, the memory allocated to it is freed. If there is free memory on any of its sides, the process’ memory is combined with the free memory, to create one large free block (hole) again.
This addition and removal of processes creates discontinuous holes (free memory slots). There are 3 ways this free memory can be allocated:
The first available hole that is large enough to accomodate the process is allocated to the process.
The smallest available hole that is large enough to accomodate the process is allocated to the process.
The largest available hole that is large enough to accomodate the process is allocated to the process.


vignettes/Regressivity_Tests.Rmd
Regressivity_Tests.Rmd
library(cmfproperty)
This article is a methods section and includes detail relevant for users who want to verify information is calculated correctly.


The probabilities of obtaining 0, 1, or 2 real (correlated) pulses in the real-plus-accidental gate are [28]
respectively, where and are the measured number of events with multiplicity n in the real-plus-accidental and accidental gates, respectively. The measured rates for the occurrence of real multiplicities of 0, 1, or 2 in the real-plus-accidental gate are called the measured zeros rate (Mm0), ones rate (Mm1), and twos rate (Mm2), respectively:
where the measured singles rate Sm is
where
and tm is the measurement time.
Deadtime corrections are not done for truncated multiplicity analysis. Approximate errors are calculated for the zeros, ones, and twos rates. If theoretical standard deviations are selected, the following equations are used; otherwise, the sample standard deviations are calculated. The zeros rate error is approximated by weighting the singles rate error by the zeros/singles ratio:
where is the singles count and is the measurement time. The ones rate error and twos rate error are calculated from the multiplicity distributions assuming that the multiplicity counts are Poisson distributed and uncorrelated and that the singles rate error is negligible. Then from the equations above for Mm1 and Mm2
where
For assay measurements, the measured singles, zeros, ones, and twos rates for an item are corrected for background as follows:
where S, M0, M1, and M2 are the background corrected rates and the superscripts item and bkgd refer to the item plus background rates and the background rates, respectively. The corresponding errors are
and likewise for M0, M1, and M2.
The real gate multiplicity probabilities for the spontaneous fission of 240Pu are [28]
where
where
= neutron detection efficiency
= doubles gate fraction
= probability of multiplicity n from the spontaneous fission of 240Pu [24]:
Truncated multiplicity assay with add-a-source
When truncated multiplicity is used in an add-a-source system, the ones rate is multiplied by a weighting factor to produce the doubles rate (D) used in the add-a-source calibration curve. Theoretically, the weighting factor is
but is not restricted to this value; rather, it is an add-a-source calibration parameter (default = 1.2). The weighting factor does not have an assigned error, so
The doubles rate derived from the ones rate is used for add-a-source analysis only when this doubles rate is below a threshold value called the “Truncated multiplicity doubles rate upper limit” (default = 100 counts/s). For doubles rates above this value, the standard add-a-source analysis is done.
Assay calculation: known efficiency
This calculation assumes that the neutron detection efficiency is not significantly changed by sample moderation and absorption. The efficiency is
where ε is the efficiency from the detector parameters and K is the normalization constant. Then the assay effective 240Pu mass and error are
where
= 240Pu spontaneous fission rate per unit mass (default = 473.5 g-1 s-1)
= average number of neutrons emitted per spontaneous fission of 240Pu
(default = 2.154)
= truncated multiplicity calibration parameter (default = 1) that doesn’t have an
assigned error.
Then
and, ignoring the error of S,
Assay calculation: unknown efficiency
This is the same as the assay calculation with known efficiency, except that the efficiency is determined from the measured twos/ones ratio. Let
= measured efficiency
Then is obtained by iteration using Newton’s method:
1. Set = 0.5
2. Calculate
and
where is a truncated multiplicity calibration parameter (default = 1) that doesn’t have an assigned error.
3. Set
4. If set
and go to step 2.
Then the assay effective 240Pu mass is
and the value of alpha is
For typical multiplicity detector parameters, numerical studies show that to within about 20%
Because the error of dominates the error of , the approximate error for is
Similarly, the approximate error of alpha is


Gecode::TupleSet Class Reference
[Extensional constraints]
#include <int.hh>
Inherits Gecode::SharedHandle.
Detailed Description
Data stored for a Table.Class represeting a set of tuples.
A TupleSet is used for storing an extensional representation of a constraint. After a TupleSet is finalized, no more tuples may be added to it.
Definition at line 44 of file tuple-set.icc.
Public Types | |
| typedef int * | Tuple |
| Type of a tuple. | |
Public Member Functions | |
| template<class T> | |
| void | add (T t) |
| Add Tuple. Assumes that arity matches. | |
| void | finalize (void) |
| Finalize datastructure (disallows additions of more Tuples). | |
| void | resize (void) |
| Resize data cache. | |
| bool | finalized (void) const |
| Is datastructure finalized. | |
| TupleSetI (void) | |
| Initialize as empty tuple set. | |
| virtual | ~TupleSetI (void) |
| Delete implementation. | |
| virtual SharedHandle::Object * | copy (void) const |
| Create a copy. | |
| TupleSetI * | implementation (void) |
| Get implementation. | |
| TupleSet (void) | |
| Construct empty tuple. | |
| TupleSet (const TupleSet &d) | |
| Initialize by TupleSet d (tuple set is shared). | |
| void | add (const IntArgs &tuple) |
| Add tuple to tuple set. | |
| void | finalize (void) |
| Finalize tuple set. | |
| bool | finalized (void) const |
| Is tuple set finalized. | |
| int | arity (void) const |
| Arity of tuple set. | |
| int | tuples (void) const |
| Number of tuples. | |
| Tuple | operator[] (int i) const |
| Get tuple i. | |
| int | min (void) const |
| Minimum domain size. | |
| int | max (void) const |
| Maximum domain size. | |
| TupleSet (Reflection::VarMap &vm, Reflection::Arg *arg) | |
| Initialize TupleSet from reflection specification. | |
| Reflection::Arg * | spec (Reflection::VarMap &vm) const |
| Create reflection specification for the TupleSet. | |
Public Attributes | |
| int | arity |
| Arity. | |
| int | size |
| Number of Tuples. | |
| Tuple ** | tuples |
| Tuples index. | |
| Tuple * | tuple_data |
| Tuple index data. | |
| int * | data |
| Tuples data. | |
| int | excess |
| Excess storage. | |
| int | min |
| Minimum and maximum in domain-values. | |
| int | max |
| int | domsize |
| Domain size. | |
| Tuple ** | last |
| Initial last structure. | |
| Tuple * | nullptr |
| Pointer to NULL-pointer. | |
Related Functions | |
| (Note that these are not member functions.) | |
| std::ostream & | operator<< (std::ostream &, const Gecode::TupleSet &ts) |
Member Typedef Documentation
| typedef int* Gecode::TupleSet::Tuple |
Constructor & Destructor Documentation
| virtual Gecode::TupleSet::~TupleSetI | ( | void | ) | [virtual] |
Delete implementation.
| Gecode::TupleSet::TupleSet | ( | void | ) | [inline] |
| Gecode::TupleSet::TupleSet | ( | const TupleSet & | d | ) | [inline] |
| Gecode::TupleSet::TupleSet | ( | Reflection::VarMap & | vm, | |
| Reflection::Arg * | arg | |||
| ) |
Member Function Documentation
| void Gecode::TupleSet::add | ( | T | t | ) | [inline] |
Add Tuple. Assumes that arity matches.
| void Gecode::TupleSet::finalize | ( | void | ) | [inline] |
Finalize datastructure (disallows additions of more Tuples).
Definition at line 154 of file tuple-set.icc.
| void Gecode::TupleSet::resize | ( | void | ) |
Resize data cache.
| bool Gecode::TupleSet::finalized | ( | void | ) | const [inline] |
| Gecode::TupleSet::TupleSetI | ( | void | ) |
Initialize as empty tuple set.
| virtual SharedHandle::Object* Gecode::TupleSet::copy | ( | void | ) | const [virtual] |
Create a copy.
| TupleSet::TupleSetI * Gecode::TupleSet::implementation | ( | void | ) | [inline] |
| void Gecode::TupleSet::add | ( | const IntArgs & | tuple | ) | [inline] |
| void Gecode::TupleSet::finalize | ( | void | ) |
Finalize tuple set.
| bool Gecode::TupleSet::finalized | ( | void | ) | const |
Is tuple set finalized.
| int Gecode::TupleSet::arity | ( | void | ) | const |
Arity of tuple set.
| int Gecode::TupleSet::tuples | ( | void | ) | const |
Number of tuples.
| TupleSet::Tuple Gecode::TupleSet::operator[] | ( | int | i | ) | const [inline] |
| int Gecode::TupleSet::min | ( | void | ) | const |
Minimum domain size.
| int Gecode::TupleSet::max | ( | void | ) | const |
Maximum domain size.
| Reflection::Arg * Gecode::TupleSet::spec | ( | Reflection::VarMap & | vm | ) | const |
Friends And Related Function Documentation
| std::ostream & operator<< | ( | std::ostream & | , | |
| const Gecode::TupleSet & | ts | |||
| ) | [related] |
Print TupleSet ts
Definition at line 90 of file tuple-set.cc.
Member Data Documentation
int Gecode::TupleSet::arity [inline] |
int Gecode::TupleSet::tuples [inline] |
int Gecode::TupleSet::min [inline] |
int Gecode::TupleSet::max [inline] |
Definition at line 60 of file tuple-set.icc.
The documentation for this class was generated from the following files:
- gecode/int/extensional/tuple-set.icc (Revision: 6102)
- gecode/int.hh (Revision: 7494)
- gecode/int/extensional/tuple-set.cc (Revision: 7288)


| I l@ve RuBoard |
3.3 ThreadsThreads are another way to start activities running at the same time. They sometimes are called "lightweight processes," and they are run in parallel like forked processes, but all run within the same single process. For applications that can benefit from parallel processing, threads offer big advantages for programmers:
Using threads is surprisingly easy in Python. In fact, when a program is started it is already running a thread -- usually called the "main thread" of the process. To start new, independent threads of execution within a process, we either use the Python thread module to run a function call in a spawned thread, or the Python threading module to manage threads with high-level objects. Both modules also provide tools for synchronizing access to shared objects with locks. 3.3.1 The thread ModuleSince the basic thread module is a bit simpler than the more advanced threading module covered later in this section, let's look at some of its interfaces first. This module provides a portable interface to whatever threading system is available in your platform: its interfaces work the same on Windows, Solaris, SGI, and any system with an installed "pthreads" POSIX threads implementation (including Linux). Python scripts that use the Python thread module work on all of these platforms without changing their source code. Let's start off by experimenting with a script that demonstrates the main thread interfaces. The script in Example 3-5 spawns threads until you reply with a "q" at the console; it's similar in spirit to (and a bit simpler than) the script in Example 3-1, but goes parallel with threads, not forks. Example 3-5. PP2E\System\Threads\thread1.py# spawn threads until you type 'q' import thread def child(tid): print 'Hello from thread', tid def parent( ): i = 0 while 1: i = i+1 thread.start_new(child, (i,)) if raw_input( ) == 'q': break parent( ) There are really only two thread-specific lines in this script: the import of the thread module, and the thread creation call. To start a thread, we simply call the thread.start_new function, no matter what platform we're programming on.[3] This call takes a function object and an arguments tuple, and starts a new thread to execute a call to the passed function with the passed arguments. It's almost like the built-in apply function (and like apply, also accepts an optional keyword arguments dictionary), but in this case, the function call begins running in parallelwith the rest of the program.
Operationally speaking, the thread.start_new call itself returns immediately with no useful value, and the thread it spawns silently exits when the function being run returns (the return value of the threaded function call is simply ignored). Moreover, if a function run in a thread raises an uncaught exception, a stack trace is printed and the thread exits, but the rest of the program continues. In practice, though, it's almost trivial to use threads in a Python script. Let's run this program to launch a few threads; it can be run on both Linux and Windows this time, because threads are more portable than process forks: C:\...\PP2E\System\Threads>python thread1.py Hello from thread 1 Hello from thread 2 Hello from thread 3 Hello from thread 4 q Each message here is printed from a new thread, which exits almost as soon as it is started. To really understand the power of threads running in parallel, we have to do something more long-lived in our threads. The good news is that threads are both easy and fun to play with in Python. Let's mutate the fork-count program of the prior section to use threads. The script in Example 3-6 starts 10 copies of its counter running in parallel threads. Example 3-6. PP2E\System\Threads\thread-count.py################################################## # thread basics: start 10 copies of a function # running in parallel; uses time.sleep so that # main thread doesn't die too early--this kills # all other threads on both Windows and Linux; # stdout shared: thread outputs may be intermixed ################################################## import thread, time def counter(myId, count): # this function runs in threads for i in range(count): #time.sleep(1) print '[%s] => %s' % (myId, i) for i in range(10): # spawn 10 threads thread.start_new(counter, (i, 3)) # each thread loops 3 times time.sleep(4) print 'Main thread exiting.' # don't exit too early Each parallel copy of the counter function simply counts from zero up to two here. When run on Windows, all 10 threads run at the same time, so their output is intermixed on the standard output stream: C:\...\PP2E\System\Threads>python thread-count.py ...some lines deleted... [5] => 0 [6] => 0 [7] => 0 [8] => 0 [9] => 0 [3] => 1 [4] => 1 [1] => 0 [5] => 1 [6] => 1 [7] => 1 [8] => 1 [9] => 1 [3] => 2 [4] => 2 [1] => 1 [5] => 2 [6] => 2 [7] => 2 [8] => 2 [9] => 2 [1] => 2 Main thread exiting. In fact, these threads' output is mixed arbitrarily, at least on Windows -- it may even be in a different order each time you run this script. Because all 10 threads run as independent entities, the exact ordering of their overlap in time depends on nearly random system state at large at the time they are run. If you care to make this output a bit more coherent, uncomment (that is, remove the # before) the time.sleep(1) call in the counter function and rerun the script. If you do, each of the 10 threads now pauses for one second before printing its current count value. Because of the pause, all threads check in at the same time with the same count; you'll actually have a one-second delay before each batch of 10 output lines appears: C:\...\PP2E\System\Threads>python thread-count.py ...some lines deleted... [7] => 0 [6] => 0 pause... [0] => 1 [1] => 1 [2] => 1 [3] => 1 [5] => 1 [7] => 1 [8] => 1 [9] => 1 [4] => 1 [6] => 1 pause... [0] => 2 [1] => 2 [2] => 2 [3] => 2 [5] => 2 [9] => 2 [7] => 2 [6] => 2 [8] => 2 [4] => 2 Main thread exiting. Even with the sleep synchronization active, though, there's no telling in what order the threads will print their current count. It's random on purpose -- the whole point of starting threads is to get work done independently, in parallel. Notice that this script sleeps for four seconds at the end. It turns out that, at least on my Windows and Linux installs, the main thread cannot exit while any spawned threads are running; if it does, all spawned threads are immediately terminated. Without the sleep here, the spawned threads would die almost immediately after they are started. This may seem ad hoc, but isn't required on all platforms, and programs are usually structured such that the main thread naturally lives as long as the threads it starts. For instance, a user interface may start an FTP download running in a thread, but the download lives a much shorter life than the user interface itself. Later in this section, we'll see different ways to avoid this sleep with global flags, and will also meet a "join" utility in a different module that lets us wait for spawned threads to finish explicitly. <IP_ADDRESS> Synchronizing access to global objectsOne of the nice things about threads is that they automatically come with a cross-task communications mechanism: shared global memory. For instance, because every thread runs in the same process, if one Python thread changes a global variable, the change can be seen by every other thread in the process, main or child. This serves as a simple way for a program's threads to pass information back and forth to each other -- exit flags, result objects, event indicators, and so on. The downside to this scheme is that our threads must sometimes be careful to avoid changing global objects at the same time -- if two threads change an object at once, it's not impossible that one of the two changes will be lost (or worse, will corrupt the state of the shared object completely). The extent to which this becomes an issue varies per application, and is sometimes a nonissue altogether. But even things that aren't obviously at risk may be at risk. Files and streams, for example, are shared by all threads in a program; if multiple threads write to one stream at the same time, the stream might wind up with interleaved, garbled data. Here's an example: if you edit Example 3-6, comment-out the sleep call in counter, and increase the per-thread count parameter from 3 to 100, you might occasionally see the same strange results on Windows that I did: C:\...\PP2E\System\Threads\>python thread-count.py | more ...more deleted... [5] => 14 [7] => 14 [9] => 14 [3] => 15 [5] => 15 [7] => 15 [9] => 15 [3] => 16 [5] => 16 [7] => 16 [9] => 16 [3] => 17 [5] => 17 [7] => 17 [9] => 17 ...more deleted... Because all 10 threads are trying to write to stdout at the same time, once in a while the output of more than one thread winds up on the same line. Such an oddity in this script isn't exactly going to crash the Mars Lander, but it's indicative of the sorts of clashes in time that can occur when our programs go parallel. To be robust, thread programs need to control access to shared global items like this such that only one thread uses it at once.[4]
Luckily, Python's thread module comes with its own easy-to-use tools for synchronizing access to shared objects among threads. These tools are based on the concept of a lock -- to change a shared object, threads acquire a lock, make their changes, and then release the lock for other threads to grab. Lock objects are allocated and processed with simple and portable calls in the thread module, and are automatically mapped to thread locking mechanisms on the underlying platform. For instance, in Example 3-7, a lock object created by thread.allocate_lock is acquired and released by each thread around the print statement that writes to the shared standard output stream. Example 3-7. PP2E\System\Threads\thread-count-mutex.py################################################## # synchronize access to stdout: because it is # shared global, thread outputs may be intermixed ################################################## import thread, time def counter(myId, count): for i in range(count): mutex.acquire( ) #time.sleep(1) print '[%s] => %s' % (myId, i) mutex.release( ) mutex = thread.allocate_lock( ) for i in range(10): thread.start_new_thread(counter, (i, 3)) time.sleep(6) print 'Main thread exiting.' Python guarantees that only one thread can acquire a lock at any given time; all other threads that request the lock are blocked until a release call makes it available for acquisition. The net effect of the additional lock calls in this script is that no two threads will ever execute a print statement at the same point in time -- the lock ensures mutually exclusive access to the stdout stream. Hence, the output of this script is the same as the original thread_count.py, except that standard output text is never munged by overlapping prints. Incidentally, uncommenting the time.sleep call in this version's counter function makes each output line show up one second apart. Because the sleep occurs while a thread holds the lock, all other threads are blocked while the lock holder sleeps. One thread grabs the lock, sleeps one second and prints; another thread grabs, sleeps, and prints, and so on. Given 10 threads counting up to 3, the program as a whole takes 30 seconds (10 x 3) to finish, with one line appearing per second. Of course, that assumes that the main thread sleeps at least that long too; to see how to remove this assumption, we need to move on to the next section. <IP_ADDRESS> Waiting for spawned thread exitsThread module locks are surprisingly useful. They can form the basis of higher-level synchronization paradigms (e.g., semaphores), and can be used as general thread communication devices.[5] For example, Example 3-8 uses a global list of locks to know when all child threads have finished.
Example 3-8. PP2E\System\Threads\thread-count-wait1.py################################################## # uses mutexes to know when threads are done # in parent/main thread, instead of time.sleep; # lock stdout to avoid multiple prints on 1 line; ################################################## import thread def counter(myId, count): for i in range(count): stdoutmutex.acquire( ) print '[%s] => %s' % (myId, i) stdoutmutex.release( ) exitmutexes[myId].acquire( ) # signal main thread stdoutmutex = thread.allocate_lock( ) exitmutexes = [] for i in range(10): exitmutexes.append(thread.allocate_lock( )) thread.start_new(counter, (i, 100)) for mutex in exitmutexes: while not mutex.locked( ): pass print 'Main thread exiting.' A lock's locked method can be used to check its state. To make this work, the main thread makes one lock per child, and tacks them onto a global exitmutexes list (remember, the threaded function shares global scope with the main thread). On exit, each thread acquires its lock on the list, and the main thread simply watches for all locks to be acquired. This is much more accurate than naively sleeping while child threads run, in hopes that all will have exited after the sleep. But wait -- it gets even simpler: since threads share global memory anyhow, we can achieve the same effect with a simple global list of integers, not locks. In Example 3-9, the module's namespace (scope) is shared by top-level code and the threaded function as before -- name exitmutexes refers to the same list object in the main thread and all threads it spawns. Because of that, changes made in a thread are still noticed in the main thread without resorting to extra locks. Example 3-9. PP2E\System\Threads\thread-count-wait2.py#################################################### # uses simple shared global data (not mutexes) to # know when threads are done in parent/main thread; #################################################### import thread stdoutmutex = thread.allocate_lock( ) exitmutexes = [0] * 10 def counter(myId, count): for i in range(count): stdoutmutex.acquire( ) print '[%s] => %s' % (myId, i) stdoutmutex.release( ) exitmutexes[myId] = 1 # signal main thread for i in range(10): thread.start_new(counter, (i, 100)) while 0 in exitmutexes: pass print 'Main thread exiting.' The main threads of both of the last two scripts fall into busy-wait loops at the end, which might become significant performance drains in tight applications. If so, simply add a time.sleep call in the wait loops to insert a pause between end tests and free up the CPU for other tasks. Even threads must be good citizens. Both of the last two counting thread scripts produce roughly the same output as the original thread_count.py -- albeit, without stdout corruption, and with different random ordering of output lines. The main difference is that the main thread exits immediately after (and no sooner than!) the spawned child threads: C:\...\PP2E\System\Threads>python thread-count-wait2.py ...more deleted... [2] => 98 [6] => 97 [0] => 99 [7] => 97 [3] => 98 [8] => 97 [9] => 97 [1] => 99 [4] => 98 [5] => 98 [2] => 99 [6] => 98 [7] => 98 [3] => 99 [8] => 98 [9] => 98 [4] => 99 [5] => 99 [6] => 99 [7] => 99 [8] => 99 [9] => 99 Main thread exiting. Of course, threads are for much more than counting. We'll put shared global data like this to more practical use in a later chapter, to serve as completion signals from child processing threads transferring data over a network, to a main thread controlling a Tkinter GUI user interface display (see Section 11.4 in Chapter 11). 3.3.2 The threading ModuleThe standard Python library comes with two thread modules -- thread , the basic lower-level interface illustrated thus far, and threading, a higher-level interface based on objects. The threading module internally uses the thread module to implement objects that represent threads and common synchronization tools. It is loosely based on a subset of the Java language's threading model, but differs in ways that only Java programmers would notice.[6] Example 3-10 morphs our counting threads example one last time to demonstrate this new module's interfaces.
Example 3-10. PP2E\System\Threads\thread-classes.py####################################################### # uses higher-level java like threading module object # join method (not mutexes or shared global vars) to # know when threads are done in parent/main thread; # see library manual for more details on threading; ####################################################### import threading class mythread(threading.Thread): # subclass Thread object def __init__(self, myId, count): self.myId = myId self.count = count threading.Thread.__init__(self) def run(self): # run provides thread logic for i in range(self.count): # still synch stdout access stdoutmutex.acquire( ) print '[%s] => %s' % (self.myId, i) stdoutmutex.release( ) stdoutmutex = threading.Lock( ) # same as thread.allocate_lock( ) threads = [] for i in range(10): thread = mythread(i, 100) # make/start 10 threads thread.start( ) # start run method in a thread threads.append(thread) for thread in threads: thread.join( ) # wait for thread exits print 'Main thread exiting.' The output of this script is the same as that shown for its ancestors earlier (again, randomly distributed). Using the threading module is largely a matter of specializing classes. Threads in this module are implemented with a Thread object -- a Python class which we customize per application by providing a run method that defines the thread's action. For example, this script subclasses Thread with its own mythread class; mythread's run method is what will be executed by the Thread framework when we make a mythread and call its start method. In other words, this script simply provides methods expected by the Thread framework. The advantage of going this more coding-intensive route is that we get a set of additional thread-related tools from the framework "for free." The Thread.join method used near the end of this script, for instance, waits until the thread exits (by default); we can use this method to prevent the main thread from exiting too early, rather than the time.sleep calls and global locks and variables we relied on in earlier threading examples. The example script also uses threading.Lock to synchronize stream access (though this name is just a synonym for thread.allocate_lock in the current implementation). Besides Thread and Lock, the threading module also includes higher-level objects for synchronizing access to shared items (e.g., Semaphore, Condition, Event), and more; see the library manual for details. For more examples of threads and forks in general, see the following section and the examples in Part III. |
| I l@ve RuBoard |


#include <GrModelMgr.h>
Classes | |
| struct | SModelEntry |
Public Member Functions | |
| GrModelMgr () | |
| class GrModelMgr | |
| ~GrModelMgr () | |
| void | Update (unsigned int timeDelta) |
| this should be called once per frame. | |
| URef< GrModel > | GetModel (const UPath &filePath, const UPath &instanceName, bool clone, bool cloneLights) |
| gets a model or it's clone. | |
| void | AddModel (URef< GrModel > model) |
Definition at line 25 of file GrModelMgr.h.
| GrModelMgr::GrModelMgr | ( | ) |
| GrModelMgr::~GrModelMgr | ( | ) |
Definition at line 40 of file GrModelMgr.cpp.
Definition at line 114 of file GrModelMgr.cpp.
| URef< GrModel > GrModelMgr::GetModel | ( | const UPath & | filePath, | |
| const UPath & | instanceName, | |||
| bool | clone, | |||
| bool | cloneLights | |||
| ) |
gets a model or it's clone.
now try to load the model.
load the model from the disk.
if we couldn't read the file, return NULL.
now try to read in the model file. Note that we let the reader delete modelBuffer for us.
create a new model.
purge the file data.
get the model and update it's time stamp.
return a clone of the model or the original model.
Definition at line 67 of file GrModelMgr.cpp.
| void GrModelMgr::Update | ( | unsigned int | timeDelta | ) |
this should be called once per frame.
public methods
collect garbage about every 10 seconds.
Definition at line 53 of file GrModelMgr.cpp.


Should you buy the Razer Viper or Viper Ultimate?
by Richard DevineSource: Windows Central
Best answer: Most people will be better with the standard Viper, which is almost identical in performance but costs a significant amount less. The Viper Ultimate is worth it though if you absolutely must have a wireless mouse.
- Best for most: Razer Viper ($80 at Amazon)
- Good for laptops: Razer Viper Ultimate ($150 at Amazon)
Picking between two of the best gaming mice around
Source: Windows Central
Choosing between the Viper and Viper Ultimate is choosing between two of the absolute best gaming mice money can buy right now. There are many similarities, and a few differences, but make no mistake — no matter which one you choose, you're getting an outstanding product.
Both share the same external design, save for some minor differences on the bottom of the Viper Ultimate that allow for the wireless charging contacts and the slot to hide the wireless dongle. This means you'll get the same shape, same programmable buttons, same optical switches and same bottom mounted DPI changer.
Inside you get the same onboard storage on both to take your profiles between PCs with ease. While the wireless option is slightly heavier, the difference is so small you won't notice it in every day use.
Where the Viper Ultimate has the edge
Source: Windows Central
The cable on the regular Viper is wonderful, with a light, snag-resistant construction that feels almost like using a wireless mouse. But it's not a wireless mouse; it still requires you to be connected to your PC. The cable is pretty long, so if you're using it with a laptop, for example, it can get a little awkward.
The sensor on the Ultimate is also a little different. It's Razer's brand new Focus+ optical sensor, which has up to 20,000 DPI, but more interestingly, some smart features like self calibration that ensures your mouse movements are in perfect sync with your PC.
Regular Razer Viper is the best choice for most
Source: Windows Central
While the tech inside the Viper Ultimate is technically superior, using the two of them feels virtually identical. For a wireless mouse to feel that good is a feat in itself, but for most people, the regular wired Viper is going to be the one to get.
It mainly comes down to price. It's about half the cost of the Viper Ultimate, while offering the same features and high level of performance. Unless you absolutely have to have a wireless mouse, it's the one to go for for most people.
Our pick
Razer Viper
The same at half the price
With near identical performance and features, the regular Viper is the easy recommendation thanks to its significantly lower price.
Good for Laptops
Razer Viper Ultimate
A great wireless mouse, particularly good for laptops
This is the best choice if you want to use it with a laptop a lot, but the significant price increase is something to take into consideration.
We may earn a commission for purchases using our links. Learn more.


The DatePeriod class
(PHP 5 >= 5.3.0, PHP 7)
简介
Represents a date period.
A date period allows iteration over a set of dates and times, recurring at
regular intervals, over a given period.
类摘要
DatePeriod implements Traversable {
/* 常量 */
const integer EXCLUDE_START_DATE = 1 ;
/* 方法 */
public __construct ( DateTimeInterface $start , DateInterval $interval , int
$recurrences [, int $options ] )
public __construct ( DateTimeInterface $start , DateInterval $interval ,
DateTimeInterface $end [, int $options ] )
public __construct ( string $isostr [, int $options ] )
public DateInterval getDateInterval ( void )
public DateTimeInterface getEndDate ( void )
public DateTimeInterface getStartDate ( void )
}
预定义常量
DatePeriod::EXCLUDE_START_DATE
Exclude start date, used in DatePeriod::__construct().
Table of Contents
• DatePeriod::__construct — Creates a new DatePeriod object
• DatePeriod::getDateInterval — Gets the interval
• DatePeriod::getEndDate — Gets the end date
• DatePeriod::getStartDate — Gets the start date
User Contributed Notes 7 notes
===============================================================================
Just an example to include the end date using the DateTime method 'modify'
modify( '+1 day' );
$interval = new DateInterval('P1D');
$daterange = new DatePeriod($begin, $interval ,$end);
foreach($daterange as $date){
echo $date->format("Ymd") . "
";
}
?>
===============================================================================
Thanks much to those of you who supplied sample code; that helps a lot.
I wanted to mention another thing that helped me: when you do that foreach (
$period as $dt ), the $dt values are DateTime objects.
That may be obvious to those of you with more experience, but I wasn't sure
until I looked it up on Stack Overflow. So I figured it was worth posting here
to help others like me who might've been confused or uncertain.
===============================================================================
DatePeriod is not compatible with negative intervals.
To do so you can simply use DateInterval and loop through it yourself like
this: (not start should be ahead of end if you use a negative interval
class DateRange extends ArrayIterator
{
protected $oDate = null;
protected $oStartDate = null;
protected $oEndDate = null;
protected $oInterval = null;
public function __construct( DateTime $oStartDate, DateTime $oEndDate,
DateInterval $oInterval = null )
{
$this->oStartDate = $oStartDate;
$this->oDate = clone $oStartDate;
$this->oEndDate = $oEndDate;
$this->oInterval = $oInterval;
}
public function next()
{
$this->oDate->add($this->oInterval);
return $this->oDate;
}
public function current()
{
return $this->oDate;
}
public function valid()
{
if ($this->oStartDate > $this->oEndDate)
{
return $this->oDate >= $this->oEndDate;
}
return $this->oDate <= $this->oEndDate;
}
}
$oRange = new DateRange(new DateTime("2013-10-01"), new DateTime("2013-01-01"),
DateInterval::createFromDateString("-1 month") );
foreach ($oRange as $oDate)
{
echo $oDate->format("Y-m-d") . "
";
}
===============================================================================
Nice example from PHP Spring Conference (thanks to Johannes Schlüter and David
Zülke)
format( "l Y-m-d H:i:s\n" );
?>
DateInterval specs could be found at http://en.wikipedia.org/wiki/ISO_8601#
Time_intervals
===============================================================================
If you want to include the end-date, add one day to it:
sub( $startDateInt );
$endDate->add( $endDateInt );
$periodInt = new DateInterval( "P1M" );
$period = new DatePeriod( $startDate, $periodInt, $endDate );
// At februari 2011:
// $period = (8,9,10,11,12,1,2)
?>
===============================================================================
Warning About DatePeriod for Some Versions of PHP
*****************************************
Some versions of PHP had a bug so that caused DatePeriod to act strangely. For
instance, the following code:
format("Y-m-d H:i:s") . "\n";
}
foreach($period as $dt){
echo $dt->format("Y-m-d H:i:s") . "\n";
}
?>
Would produce the following text:
2011-01-01 00:00:00
2011-02-01 00:00:00
2011-03-01 00:00:00
2011-04-01 00:00:00
2011-05-01 00:00:00
2011-06-01 00:00:00
2011-07-01 00:00:00
2011-08-01 00:00:00
Instead of:
2011-01-01 00:00:00
2011-02-01 00:00:00
2011-03-01 00:00:00
2011-04-01 00:00:00
2011-01-01 00:00:00
2011-02-01 00:00:00
2011-03-01 00:00:00
2011-04-01 00:00:00
5.3.2 fails
5.3.3 fails
5.3.4 -??-
5.3.5 works
===============================================================================
The iterator seems to check the time as well, it excludes the end element if
its time is 00:00:00. So the slightly safer version (to compare it against
joshs suggestion) is to use $date->setTime(23, 59, 59) instead of $date->modify
("+1 day").


If you are watching this talk, you probably agree.
HTTP/2 is concurrent, so Cowboy must also be.
Even if we are required to make small backward incompatible changes, overall the Cowboy 2 design will stand the test of time.
You can quote me on that.
Misultin, HTTP/2, Windows
HTTP/2, HTTP/1.1, Websocket
HTTP/1.0, SPDY/3.1, SPDY/3
All parsing code will be in Cowlib.
Cowboy will deal strictly with protocol logic and its own features.
Do as little as possible, allocate as little as possible, and provide a pluggable interface for power users.
Connection → Protocol → Streams
cowboy_clear → cowboy_http
cowboy_tls → ALPN → Protocol
Erlang/OTP 18+
Same mechanism for:
A stream is an HTTP request/response pair identified by a unique stream identifier.
A stream can be initiated by the server using a promise.
Pie tastes good, right? Just like Cowboy 2.
Favor convenience, elegance and simplicity. No pitfalls. Straightforward.
Middlewares → User handlers
Default: cowboy_router → cowboy_handler
No more 'error' tuple; ok, suspend, stop
I would like to solve the fact that routing rules are copied to all connection processes. Perhaps ets?
Required for better HATEOAS support.
Give module name and bindings, get URL.
Add query string to URL (optional).
Use constraints all across high-level Cowboy.
Improve error handling interface, add human errors.
Unify init and terminate callbacks
Simplify init return value: {ok | Mod, State}
Do everything in init/2
Add behaviour with optional callbacks
Remove known_content_type callback
Immutable
3 levels of access to values:
Extract, validate and convert values in one step.
#{lang := Lang} = cowboy_req:match_qs(
[{lang, nonempty, <<"en-US">>}], Req)
Handler suffix becomes _h
Settle on 'stop' instead of 'shutdown' or 'halt'
Cowlib provides parsers for nearly everything
Connection process switches to Websocket protocol
Websocket permessage-deflate support added.
Websocket UTF-8 validation optimized.
An option to disable validation will be added.
Gun is an asynchronous HTTP client with support for HTTP/1.1, HTTP/2, SPDY/3 and Websocket, designed for long-running connections.
Erlang.mk is a Makefile based build tool that just works.
No Makefile knowledge required to use it
My users need a build tool that actually works.
| Rebar feature | Erlang.mk equivalent |
|---|---|
| rebar.config | variables |
| rebar.config.script | variables and/or rules |
| rebar hook | rules |
| rebar2 plugin | rules |
| rebar3 plugin | rules |
Getting close to 450 projects
DEPS = cowboy cpg erlydtl riak_core
aberth active aleppo alog annotations antidote apns azdht backoff barrel basho_bench bcrypt beam beanstalk bear bertconf bifrost binpp bisect bitcask bitstore bootstrap boss_db boss bson bullet cache cake carotene cberl cecho cferl chaos_monkey check_node chronos classifier clique cloudi_core cloudi_service_* cluster_info color confetti couchbeam couch covertool cowboy cowdb cowlib cpg cqerl cr cuttlefish damocles debbie decimal detergent dh_date dhtcrawler dirbusterl dispcount dlhttpc dns dnssd dtl dynamic_compile e2 eamf eavro ecapnp econfig edate edgar edis edns
edown eep_app eep efene eganglia egeoip ehsa ejabberd ej ekaf elarm eleveldb elli elvis emagick emysql enm entop epcap eper epgsql episcina eplot epocxy epubnub eqm eredis eredis_pool erlang_cep erlang_js erlang_localtime erlang_smtp erlasticsearch erlastic_search erlbrake erlcloud erlcron erldb erldis erldns erldocker erlfsmon erlgit erlguten erlmc erlmongo erlog erlpass erlport erlsha2 erlsh erlsom erl_streams erlubi erlvolt erlware_commons erlydtl errd erserve erwa espec estatsd etap etest etest_http etoml eunit_formatters eunit euthanasia evum exec exml exometer exs1024 exs64 exsplus116 exsplus128 ezmq ezmtp
fast_disk_log feeder fix flower fn folsom_cowboy folsom folsomite fs fuse gcm gcprof geas geef gen_cycle gen_icmp gen_nb_server gen_paxos gen_smtp gen_tracker gen_unix getopt gettext giallo gin gitty gold_fever gpb gproc grapherl gun hackney hamcrest hanoidb hottub hyper ibrowse ierlang iota ircd irc_lib iris iso8601 itweet jerg jesse jiffy jiffy_v jobs joxa jsonerl json jsonpath json_rec jsonx jsx kafka kai katja kdht kinetic kjell kraken kucumberl kvc kvlists kvs lager_amqp_backend lager lager_syslog lambdapad lasp lasse ldap lethink lfe ling live lmq locker locks log4erl lol lucid luerl luwak lux mad mavg mcd mcerlang mc_erl meck
mekao memo merge_index merl mimetypes mixer mochiweb mochiweb_xpath mockgyver modlib mongodb mongooseim moyo msgpack mustache myproto mysql n2o nat_upnp neo4j neotoma newrelic nifty nitrogen_core nkbase nkdocker nkpacket nodefinder nprocreg oauth2c oauth2 oauth of_protocol openflow openid openpoker pal parse_trans parsexml pegjs percept2 pgsql pkgx pkt plain_fsm plumtree pmod_transform pobox ponos poolboy pooler poxa pqueue procket proper props protobuffs psycho ptrackerl purity push_service qdate qrcode quest rabbit_exchange_type_riak rack radierl rafter ranch
rbeacon rebar rebus rec2json recon record_info redgrid redo relx resource_discovery restc rfc4627_jsonrpc riakc riak_core riak_dt riak_ensemble riakhttpc riak_kv riaknostic riak_pg riak_pipe riakpool riak_sysmon riak_test rivus_cep rlimit safetyvalve seestar service setup sext sfmt sgte sheriff shotgun sidejob sieve sighandler simhash simple_bridge simple_oauth2 skel social spapi_router sqerl srly sshrpc stable statebox statebox_riak statman statsderl stdinout_pool stockdb stripe surrogate swab swarm switchboard sync syntaxerl syslog taskforce tddreloader tempo ticktick tinymq tinymt traffic_tools trane transit trie
triq tunctl twerl twitter_erlang ucol_nif unicorn unsplit uuid ux vert verx vmq_acl vmq_bridge vmq_graphite vmq_passwd vmq_server vmq_snmp vmq_systree vmstats walrus webmachine websocket_client worker_pool wrangler wsock xref_runner yamerl yamler yaws zab_engine zeta zippers zlists zraft_lib zucchini
All the variables that ultimately build the .app file are either optional or automatically defined when bootstrapping.
Adding a dependency becomes a one step process.
Make 4 makes supporting Windows possible without needing the whole Unix toolchain.
Before this there are much bigger Windows issues to solve to make the experience smooth, unrelated to Erlang.mk
This book is the missing developer manual. It contains advice from my experience working with Cowboy.
Price: 50€
Ebook preorder available soon on ninenines.eu
Want to buy it today and get it right now? Come talk to me or send an email later at<EMAIL_ADDRESS>Cowboy 2's design is long term.
To look at an early release of the code in this talk:
tag 2.0.0-pre.2
To buy the book, access projects:
ninenines.eu
To follow my exciting adventures:
@lhoguin on Twitter
To ask questions, talk about hats:
#ninenines on Freenode


Batman: Arkham Legacy reveal at The Game Awards 2019 next month claims rumour
Warner Bros. might finally be ready to reveal their next Batman Arkham game next month, according to the latest rumours.
It’s been nearly five years since the last major Batman game came out and ever since we have been drowning in rumours regarding Warner’s next entry in the Arkham franchise.
But it looks like those rumours and leaks are about to come to an end, as the latest one is claiming that a new game, apparently called Arkham Legacy, will be officially revealed next month.
This report comes from YouTube channel Sclmof, which claims to have heard from a source that the game will be announced at this year’s Game Awards, which is scheduled for 13 December.
Apparently, this information comes from the same source that leaked the cancelled Damian Wayne game, so there’s a good chance it’s reliable.
Advertisement Advertisement
Previous rumours have been somewhat consistent, claiming that this new game will be inspired by the Court of Owls storyline from the comics, which saw Batman face a shadowy organisation that had been secretly controlling Gotham City for centuries.
That also matches up with a mysterious series of tweets from Warner Bros. Games Montreal, which had a very short video that just showed off various symbols, one of which at least seemed to be connected to the Court of Owls.
It’s also been suggested that players will be able to take control of the ‘Bat family,’ implying multiple playable characters, which would make sense given the title and how Arkham Knight ended. Although there’s never been any evidence for that.
The only bit of concrete info we do have is that Kevin Conroy, who has voiced Batman in multiple media, including the Arkham games, won’t be reprising the role.
What has also been clear is that Rocksteady, who created the series, are not the main developer, but instead Arkham Origins developer Warner Bros. Games Montreal are making the game.
What Rocksteady has been doing all generation remains a mystery and, unlike Arkham Legacy, there’s no hint of an imminent reveal. Although most rumours point towards them working on some kind of online title, perhaps the DC universe – or at least Batman universe – equivalent of Square Enix’s Avengers game.
Advertisement Advertisement
Email<EMAIL_ADDRESS>leave a comment below, and follow us on Twitter


A polished design and UX
Focused design and easy navigation across the application creates a seamless feel.
An upgraded LMS (Learning Management System) platform that we need.
Focused design and easy navigation across the application creates a seamless feel.
With integration of class,tasks,tests,assignments and results oneclass is your onestop destination for all your education needs.
Utilising ML algorithms in the web app we aim to provide analytics based on various parameters to both teachers and students regarding students course performance and more.
we are building a platform which will strongly integrate essential online education processes and provide a go to destination for users needs.
Get updates about your class and tests schedules directly from your oneclass account.
All you need is a browser to join class and utilise all the features of oneclass.
With the dashboard and progress we make it easier to focus on learning what is essential.
Educators could provide the study material and assignments through oneclass,and conduct classes on the same platform.
With easy integration and design we are providing a new online education ecosystem.


org.apache.velocity.util.introspection
Class IntrospectorBase
java.lang.Object
|
+--org.apache.velocity.util.introspection.IntrospectorBase
- Direct Known Subclasses:
- Introspector
- public class IntrospectorBase
- extends java.lang.Object
This basic function of this class is to return a Method
object for a particular class given the name of a method
and the parameters to the method in the form of an Object[]
The first time the Introspector sees a
class it creates a class method map for the
class in question. Basically the class method map
is a Hastable where Method objects are keyed by a
concatenation of the method name and the names of
classes that make up the parameters.
For example, a method with the following signature:
public void method(String a, StringBuffer b)
would be mapped by the key:
"method" + "java.lang.String" + "java.lang.StringBuffer"
This mapping is performed for all the methods in a class
and stored for
- Version:
- $Id: IntrospectorBase.java,v <IP_ADDRESS> 2004/03/03 23:23:08 geirm Exp $
- Author:
- Jason van Zyl, Bob McWhirter, Attila Szegedi, Paulo Gaspar
|
Field Summary |
protected java.util.Set |
cachedClassNames
Holds the qualified class names for the classes
we hold in the classMethodMaps hash |
protected java.util.Map |
classMethodMaps
Holds the method maps for the classes we know about, keyed by
Class object. |
|
Method Summary |
protected void |
clearCache()
Clears the classmap and classname
caches |
protected ClassMap |
createClassMap(java.lang.Class c)
Creates a class map for specific class and registers it in the
cache. |
java.lang.reflect.Method |
getMethod(java.lang.Class c,
java.lang.String name,
java.lang.Object[] params)
Gets the method defined by name and
params for the Class c . |
| Methods inherited from class java.lang.Object |
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait |
classMethodMaps
protected java.util.Map classMethodMaps
- Holds the method maps for the classes we know about, keyed by
Class object.
cachedClassNames
protected java.util.Set cachedClassNames
- Holds the qualified class names for the classes
we hold in the classMethodMaps hash
IntrospectorBase
public IntrospectorBase()
getMethod
public java.lang.reflect.Method getMethod(java.lang.Class c,
java.lang.String name,
java.lang.Object[] params)
throws java.lang.Exception
- Gets the method defined by
name
and
params
for the Class c
.
- Parameters:
c
- Class in which the method search is taking placename
- Name of the method being searched forparams
- An array of Objects (not Classes) that describe the
the parameters- Returns:
- The desired Method object.
createClassMap
protected ClassMap createClassMap(java.lang.Class c)
- Creates a class map for specific class and registers it in the
cache. Also adds the qualified name to the name->class map
for later Classloader change detection.
clearCache
protected void clearCache()
- Clears the classmap and classname
caches
Copyright © 2002 Apache Software Foundation. All Rights Reserved.


CMAT 2020: Know steps to apply online, important dates, and other details
CMAT is a national-level entrance examination for admission to management programmes of all AICTE-recognised institutes
by BS Web TeamCommon Management Admission Test or CMAT 2020 registrations have started on the official website, cmat.nta.nic.in, from today. National Testing Agency (NTA) will be conducting the exams. Candidates interested in applying for CMAT 2020 must fill the online application forms. CMAT 2020 would be a three-hour computer-based test and would be conducted in a single session. CMAT has four sections — Quantitative Technique, Logical Reasoning, Language Comprehension and General Awareness — of 25 questions each.
CMAT 2020: All you need to know
CMAT 2020: How to apply online
Step 1: Visit official website - cmat.nta.nic.in
Step 2: Fill in necessary details. Do remember to note down the 'application number'
Step 3: Pay the fee
Step 4: Take a print out and keep it for future reference
Step 5: Choose the city for giving CMAT-2020 exam
CMAT 2020 exam schedule: Important date
CMAT registration last date: November 30
Last date to pay fees: December 1
Last date for Choice of Examination City: December 1
Admit Card Download: December 24 onwards
Date of Examination: January 28, 2020
CMAT Answer Keys: Few days before the result is declared
CMAT 2020 result: February 7
About CMAT
Common Management Admission Test (CMAT) is a national level entrance examination for entry into management programmes in all AICTE recognized institutes. CMAT score is, however, not applicable for admission to IIMs which required a CAT score.


×
Home
Wake Construction System
Projects
Testamonials
About Us
Community
Contact Us
☰ MENU
Copyright © 2020 Wake Construction Group - Site by ErgoAssistive Technology


Fetch external files and highlight them with Prism. Used on the Prism website itself.
Use the data-src
attribute on empty

elements, like so:

You don’t need to specify the language, it’s automatically determined by the file extension. If, however, the language cannot be determined from the file extension or the file extension is incorrect, you may specify a language as well (with the usual class name way).
Use the data-range
attribute to display only a selected range of lines
from the file, like so:

Lines start at 1, so "1,5"
will display line 1 up to and including line 5. It's also possible to specify just a single line (e.g. "5"
for just line 5) and open ranges (e.g. "3,"
for all lines starting at line 3). Negative integers can be used to specify the n-th last line, e.g. -2 for the second last line.
When data-range
is used in conjunction with the Line Numbers plugin,
this plugin will add the proper data-start
according to the specified range.
This behavior can be overridden by setting the data-start
attribute manually.
Please note that the files are fetched with XMLHttpRequest. This means that if the file is on a different origin, fetching it will fail, unless CORS is enabled on that website.
When used in conjunction with the Toolbar plugin, this plugin can also display a
button to download the file.
To use it, add a data-download-link
attribute on the

element.
Optionally, the text can also be customized by using a data-download-link-label
attribute.

The plugin’s JS code:
This page (first 15 lines using data-range):
File that doesn’t exist:
With a download button, line-numbers, and data-range="29,62" :
For more examples, browse around the Prism website. Most large code samples are actually files fetched with this plugin.


{%- call service_card("Haldis", "Order food from our favorite places and eat together with other Zeus members.", "https://haldis.zeus.gent") -%}
{%- call service_card("Tap", "Grab drinks and snacks in the kelder and easily pay for them.", "https://tap.zeus.gent") -%}
{%- call service_card("Tab", "Manage your Zeus balance for paying in Haldis or Tap.", "https://tab.zeus.gent") -%}
{%- call service_card("Gamification", "Get points for code contributions and join the leaderboard.", "https://zeus.ugent.be/game") -%}
{%- call service_card("Cat", "Keep track of who has given hugs to who. We all need some affection sometimes…", "https://cat.zeus.gent") -%}


About me
- I'm an art history major
- I graduated from UW at 2016
- I can speak both Chinese and English
Ten resturants that I love in seattle
- Palace Korean Bar & Gill
- Ba Bar
- Wing Dome
- Noodle Nation
- Zeeks pizza
- Ding Tai Fung
- Dicks
- Heaven Sent Chicken
- Patty's Eggnest
- Thai one on
adfhdfjoijaijsfoijsaf


DE – Sen. Thomas R. Carper (D) and Sen. Christopher A. Coons (D)
Committees
Christopher A. Coons is the #5 Democrat on the Senate Appropriations Subcommittee on Commerce, Justice, Science, and Related Agencies
Christopher A. Coons is the #10 Democrat on the Senate Committee on Appropriations
Christopher A. Coons is the #8 Democrat on the Senate Appropriations Subcommittee on Energy and Water Development
HEP Grants
In the past 9 years, this state has received: 11 HEP grants, totalling $1,758,825
Year Institution Amount ($)
------ ---------------------- ------------
2019 University of Delaware 100,000
2018 University of Delaware 0
2017 University of Delaware 215,000
2016 University of Delaware -36,175
2015 University of Delaware 420,000
2014 University of Delaware 347,000
2013 University of Delaware 358,000
2012 University of Delaware 355,000
SC Contracts
This state received no SC contracts from 2012-2020
NSF MPS Grants
In the past 9 years, this state has received: 224 NSF MPS grants, totalling $49,819,025
Year Institution Amount ($)
------ ------------------------------------------- ------------
2020 University Of Delaware 555,324
2019 Delaware State University 946,372
2019 University Of Delaware 11,307,029
2018 University Of Delaware 5,711,722
2017 Delaware State University 175,533
2017 University Of Delaware 3,329,697
2016 University Of Delaware 7,708,351
2015 Delaware State University 225,072
2015 University Of Delaware 4,786,457
2014 Delaware State University 501,100
2014 University Of Delaware 3,258,532
2013 Henry Francis Dupont Winterthur Museum Inc. 3,000
2013 University Of Delaware 4,710,377
2012 University Of Delaware 6,600,459
SULI/CCI Interns
From 2014-2018, this state had 13 SULI/CCI interns
# Interns Program College
----------- --------- -------------------------
12 SULI University of Delaware
1 SULI Delaware State University
13 — — Back to top
DE-00 – Rep. Lisa Blunt Rochester (D) – Wikipedia
Committees
Lisa Blunt Rochester is the #29 Democrat on the House Committee on Energy and Commerce
HEP Grants
In the past 9 years, this district has received: $1,758,825 in SC HEP grants.
Institution Amount ($) Start End Principal Investigator Project Title
---------------------- ------------ ------- ----- ------------------------ ----------------------------------------------------
University of Delaware 735,000 2015 2020 Shafi, Qaisar Particle Theory, Particle Astrophysics and Cosmology
University of Delaware 310,825 2014 2017 Shafi, Qaisar Particle Theory and Cosmology
University of Delaware 713,000 2012 2014 Shafi Particle Theory and Cosmology
SC Contracts
This district received no SC contracts from 2012-2020
NSF MPS Grants
In the past 9 years, this district has received: $49,819,025 in NSF MPS grants.
Year Institution Amount ($)
------ ------------------------------------------- ------------
2020 University Of Delaware 555,324
2019 Delaware State University 946,372
2019 University Of Delaware 11,307,029
2018 University Of Delaware 5,711,722
2017 Delaware State University 175,533
2017 University Of Delaware 3,329,697
2016 University Of Delaware 7,708,351
2015 Delaware State University 225,072
2015 University Of Delaware 4,786,457
2014 Delaware State University 501,100
2014 University Of Delaware 3,258,532
2013 Henry Francis Dupont Winterthur Museum Inc. 3,000
2013 University Of Delaware 4,710,377
2012 University Of Delaware 6,600,459
SULI/CCI Interns
From 2014-2018, this district had 13 SULI/CCI interns
Term Name College Host Lab Program
----------- ------------------------ ------------------------- -------------------------------------- ---------
Summer 2018 Alex Abbruscato University of Delaware Brookhaven National Laboratory SULI
Summer 2017 Griffen Desroches University of Delaware Argonne National Laboratory SULI
Summer 2015 Matthew Ingham University of Delaware Brookhaven National Laboratory SULI
Summer 2015 Peter Spurrell University of Delaware Brookhaven National Laboratory SULI
Summer 2015 Edward clinton Bamberger University of Delaware Pacific Northwest National Laboratory SULI
Summer 2015 Elizabeth Rose Cipriani University of Delaware Pacific Northwest National Laboratory SULI
Summer 2015 Ryan James McDonough University of Delaware National Renewable Energy Laboratory SULI
Summer 2015 Ryan McKenna University of Delaware Lawrence Livermore National Laboratory SULI
Summer 2014 Elizabeth Rose Cipriani University of Delaware Pacific Northwest National Laboratory SULI
Summer 2014 Anna Walter University of Delaware Pacific Northwest National Laboratory SULI
Summer 2014 Haley Northrup University of Delaware National Renewable Energy Laboratory SULI
Summer 2014 Stephen Nicholas Herbein University of Delaware Lawrence Livermore National Laboratory SULI
Summer 2014 Lord Moses Delaware State University Ames National Laboratory SULI


DuxTree is a React tree component with built-in support for lazy loading of tree nodes and optional checkable folders and nodes. Nodes can use custom rendering and the tree contents can be altered at runtime. All tree styles can be overridden in CSS.
DuxTree offers the following notable features.
This project's GitHub can found at https://github.com/kenschenke/duxtree.


Updated the design and incorported many plugin functions for this WordPress ecommerce site. Including: shipping calculator, wholesale site, fitment finder and SEO. Doubled yearly sales with redesigns, added functionality and SEO strategies. Also enhanced email marketing and video editing.
Complete design and art direction of this WordPress ecommerce website and SEO. Including fitment finder and payment gateway.
Complete design and art direction for this WordPress informational blog site for a excavator company.
Complete design and art direction for this WordPress site. Implemented fitment finder, shipping calculator, SEO strategies and streamlined user experience.
Complete design and art direction for this WordPress site for a online hemp hat retailer.
Coding project where I collaborated with a group on coding and design of a fun trivia app. Used local storage and pulled data from API's.
Coding project to develop an app to allow a user to play with the federal budget figures. User can change the percentage of collected taxes and change federal department expenses to see if they can do a better job at balancing the federal budget than the government. MongoDB, Express, React, Node, CSS, Photoshop
This application will build a software engineering team generator from the terminal. It will prompt the user for information about their manager and which team members they would like to add to the team. Once all team members are added the application will generate a team.html file that displays the team created through the terminal input. The html page will display cards that include the team members details and contact info.
GitHub RepoCoding project to connect to an API and pull weather data to a user dashboard using local storage.
Coding project to connect the front end to a a database setup with Mongo DB Atlas. App creates a log for your workouts and also generates a graph with results.
View ProjectMore coming soon...


If you find any bugs or have any questions please contact the developers. Information on how to do this can be found on the Reporter home page: http://compomics.github.io/projects/reporter.html.


| Modifier and Type | Class and Description |
|---|---|
class |
ScoreGeneratorGas
ScoreGeneratorGas.java --- A
ScoreGenerator focusing on the gas ratio
of the total number of resources. |
class |
ScoreGeneratorMineral
ScoreGeneratorMineral.java --- A
ScoreGenerator focusing on the
mineral ratio of the total number of resources. |
class |
ScoreGeneratorTrainingFacilitiesFree
ScoreGeneratorTrainingFacilitiesFree.java --- A
ScoreGenerator
focused on generating a score based on the number of training facilities at
which a Unit can currently be trained. |
class |
ScoreGeneratorTrainingFacilitiesIdle
ScoreGeneratorTrainingFacilitiesIdle.java --- A
ScoreGenerator
focused on generating a divider based on the number of idling training
facilities. |
class |
ScoreGeneratorWorker
ScoreGeneratorWorker.java --- A
ScoreGenerator focusing on the
generation of scores for workers. |
| Modifier and Type | Class and Description |
|---|---|
class |
ScoreGeneratorFixed
ScoreGeneratorFixed.java --- A
ScoreGenerator based on returning a
fixed value as score. |
class |
ScoreGeneratorFixed_Forbid
ScoreGeneratorFixed_Forbid.java --- A
ScoreGenerator returning a
score-divider combination in such a way that the GameState s using
this ScoreGenerator will return a very low / null multiplier. |
class |
ScoreGeneratorFixed_Force
ScoreGeneratorFixed_Force.java --- A
ScoreGenerator returning a
score-divider combination in such a way that the GameState s using
this ScoreGenerator will return a high multiplier. |
class |
ScoreGeneratorFixed_Null
ScoreGeneratorFixed_Null.java --- A
ScoreGenerator returning zero as
score. |
class |
ScoreGeneratorFixed_One
ScoreGeneratorFixed_One.java --- A
ScoreGenerator returning one as
score. |
| Modifier and Type | Class and Description |
|---|---|
class |
ScoreGeneratorGradualChange
ScoreGeneratorGradualChange.java --- A
ScoreGenerator applying a
constant rate to an existing score. |
class |
ScoreGeneratorGradualChangeMax
ScoreGeneratorGradualChangeMax.java --- A
ScoreGenerator applying a
constant rate to an existing score until a threshold is reached. |
| Modifier and Type | Class and Description |
|---|---|
class |
ScoreGeneratorBuilding
ScoreGeneratorBuilding.java --- A
ScoreGenerator focused on
buildings. |
class |
ScoreGeneratorBuildingTerran
ScoreGeneratorBuildingTerran.java --- A
ScoreGenerator focused on
buildings. |
class |
ScoreGeneratorExpansionFocused
ScoreGeneratorExpansionFocused.java --- A
ScoreGenerator focused on
expansion. |
class |
ScoreGeneratorGradualChangeMaxReset
ScoreGeneratorGradualChangeMaxReset.java --- A
ScoreGenerator
applying a constant rate to an existing score until a threshold is reached. |
class |
ScoreGeneratorRefinery
ScoreGeneratorRefinery.java --- A
ScoreGenerator focused on
refineries. |
class |
ScoreGeneratorTechnologyFocused
ScoreGeneratorTechnologyFocused.java --- A
ScoreGenerator focused on
technologies. |
class |
ScoreGeneratorUpgradeFocused
ScoreGeneratorUpgradeFocused.java --- A
ScoreGenerator focused on
upgrades. |
| Modifier and Type | Class and Description |
|---|---|
class |
ScoreGeneratorDecreaseFast
ScoreGeneratorDecreaseFast.java --- A
ScoreGeneratorGradualChangeTarget decreasing the score (Fast) until
the minimum is reached. |
class |
ScoreGeneratorDecreaseNormal
ScoreGeneratorDecreaseNormal.java --- A
ScoreGeneratorGradualChangeTarget decreasing the score (Normal) until
the minimum is reached. |
class |
ScoreGeneratorDecreaseSlow
ScoreGeneratorDecreaseSlow.java --- A
ScoreGeneratorGradualChangeTarget decreasing the score (Slow) until
the minimum is reached. |
class |
ScoreGeneratorDecreaseVeryFast
ScoreGeneratorDecreaseVeryFast.java --- A
ScoreGeneratorGradualChangeTarget decreasing the score (Very fast)
until the minimum is reached. |
class |
ScoreGeneratorDecreaseVerySlow
ScoreGeneratorDecreaseVerySlow.java --- A
ScoreGeneratorGradualChangeTarget decreasing the score (Very slow)
until the minimum is reached. |
class |
ScoreGeneratorFlying
ScoreGeneratorFlying.java --- A
ScoreGenerator regarding flying
Units. |
class |
ScoreGeneratorGradualChangeTarget
ScoreGeneratorGradualChangeTarget.java --- A
ScoreGenerator applying
a constant rate to an existing score targeting a specific value. |
class |
ScoreGeneratorIncreaseFast
ScoreGeneratorIncreaseFast.java --- A
ScoreGeneratorGradualChangeTarget increasing the score (Fast) until
the maximum is reached. |
class |
ScoreGeneratorIncreaseNormal
ScoreGeneratorIncreaseNormal.java --- A
ScoreGeneratorGradualChangeTarget increasing the score (Normal) until
the maximum is reached. |
class |
ScoreGeneratorIncreaseSlow
ScoreGeneratorIncreaseSlow.java --- A
ScoreGeneratorGradualChangeTarget increasing the score (Slow) until
the maximum is reached. |
class |
ScoreGeneratorIncreaseVeryFast
ScoreGeneratorIncreaseVeryFast.java --- A
ScoreGeneratorGradualChangeTarget increasing the score (Very fast)
until the maximum is reached. |
class |
ScoreGeneratorIncreaseVerySlow
ScoreGeneratorIncreaseVerySlow.java --- A
ScoreGeneratorGradualChangeTarget increasing the score (Very slow)
until the maximum is reached. |
| Modifier and Type | Class and Description |
|---|---|
class |
ScoreGeneratorHealerTerran
ScoreGeneratorHealerTerran.java --- A
ScoreGenerator focusing on the
Terran healer score. |
class |
ScoreGeneratorProportion
ScoreGeneratorProportion.java --- A
ScoreGenerator based on returning
a score based on a generated numerator and denominator (=> Proportion!). |
class |
ScoreGeneratorProportionUnitTypes
ScoreGeneratorProportionUnitTypes.java --- A
ScoreGenerator based on
returning a score based on the proportion of different amounts of Units whose
UnitTypes are defined in a subclass. |
class |
ScoreGeneratorSupportTerran
ScoreGeneratorSupportTerran.java --- A
ScoreGenerator focusing on the
Terran support score. |
| Modifier and Type | Class and Description |
|---|---|
class |
ScoreGeneratorSpecific
ScoreGeneratorSpecific.java --- A
ScoreGenerator applying a target
specific rate to the score. |
class |
ScoreGeneratorSpecificBuilding
ScoreGeneratorSpecificBuilding.java --- A
ScoreGenerator applying a
target specific rate to the score. |
class |
ScoreGeneratorSpecificBuildingTerranBio
ScoreGeneratorSpecificBuildingTerranBio.java --- A
ScoreGenerator
applying a target specific rate to the score. |
class |
ScoreGeneratorSpecificBuildingTerranMachines
ScoreGeneratorSpecificBuildingTerranMachines.java --- A
ScoreGenerator applying a target specific rate to the score. |
class |
ScoreGeneratorSpecificTech
ScoreGeneratorSpecificTech.java --- A
ScoreGenerator applying a
target specific rate to the score. |
class |
ScoreGeneratorSpecificTechTerranBio
ScoreGeneratorSpecificTechTerranBio.java --- A
ScoreGenerator
applying a target specific rate to the score. |
class |
ScoreGeneratorSpecificTechTerranMachines
ScoreGeneratorSpecificTechTerranMachines.java --- A
ScoreGenerator
applying a target specific rate to the score. |
class |
ScoreGeneratorSpecificUnit
ScoreGeneratorSpecificUnit.java --- A
ScoreGenerator applying a
target specific rate to the score. |
class |
ScoreGeneratorSpecificUnitTerranBio
ScoreGeneratorSpecificUnitTerranBio.java --- A
ScoreGenerator
applying a target specific rate to the score. |
class |
ScoreGeneratorSpecificUnitTerranMachines
ScoreGeneratorSpecificUnitTerranMachines.java --- A
ScoreGenerator
applying a target specific rate to the score. |
class |
ScoreGeneratorSpecificUpgrade
ScoreGeneratorSpecificUpgrade.java --- A
ScoreGenerator applying a
target specific rate to the score. |
class |
ScoreGeneratorSpecificUpgradeTerranBio
ScoreGeneratorSpecificUpgradeTerranBio.java --- A
ScoreGenerator
applying a target specific rate to the score. |
class |
ScoreGeneratorSpecificUpgradeTerranMachines
ScoreGeneratorSpecificUpgradeTerranMachines.java --- A
ScoreGenerator
applying a target specific rate to the score. |


{% load staticfiles %}
DATASAUR
Home
(current)
Twitter Trends
Fetching tweets and Analyzing the sentiment..
What are you looking for?
search


Introduction
Best "permanent" URL to get to this page:
http://www.kagi.com/weyer/#PilotDoc
PilotDOC is a Newt's Cape 2.x-only plugin
for converting and displaying a Palm Pilot DOC text or ImageViewer graphic file
directly as a Newton book.
With user feedback and as time permits, I may enhance it
-- there are a number of limitations/possibilities indicated below.
If you find problems, email Steve
with details, including URLs of directory page and specific DOC or ImageViewer file,
and version of Newt's Cape, PilotDoc and MessagePad. Of course, I'd also like to hear of successes...
Features
- sites
- http://www.memoware.com MemoWare
- Pilot Screwdriver: Internet File Converter (create DOC/ImageViewer file from URL)
- MobiPocket.com
- (others?)
- transfer
- http
- Newt's Cape: select or enter a URL to download
DOC or ImageViewer file directly to Newton
- Inbox requires Newt's Cape 2.0x-2(or later);
select document via Newt's Cape:File:Open Inbox or Inbox:Newt's Cape Open
- EE Transfer:
assumes ZModem or transfer protocol that preserves file name and binary content
- SimpleMail 4.0:
select the .pdf or .prb file via Part picker (ignore 'no stationery' warning)
- (NewtFTP? other email clients?)
- MIME types
- application/octet-stream, chemical/x-pdb
- [1.0c2] application/x-pilot-pdb, application/x-pilot-prc, application/x-palmpilot, application/x-pilot, text/plain, */*
- (others?)
- file formats
- files should generally have .pdb (database) or .prc (resource) file extensions (or inside .zip)
- PilotDOC converts DOC files of type: "TEXt", ID: "REAd"; this includes TealDoc and RichReader documents
- [1.0b2] PilotDoc converts ImageViewer (graphic) files: b&w, and grayscale; type: "vIMG", ID: "View"
- [1.0c2] more .prc files recognized
- [1.0d2] if HTML tag detected, prompts to process it, e.g., MobiPocket.com (although these aren't "pure" HTML)
- (future? include text annotation and multiple images from same file)
- PilotDoc currently rejects books (with same extensions unfortunately)
in other proprietary formats:
iSilo, HanDBase, JFile, TealMeal, Pandora, TealInfo, MobileDB, HandMap, and regular executable applications.
- (future?
with more documentation (and help from someone with a Pilot),
convert/test books or data in other formats, including
bookmark/link/format info).
- file size
- files usually contain compressed text or graphics;
these are converted/expanded and then recompressed on the Newton;
before downloading, be sure to have adequate space available on your default store
- .zip files
- www.palmzip.com
- 1.0c2 (or later) required since www.palmzip.com returns a different MIME type
- [first time] enter: http://www.palmzip.com/palmzip.nsf/direct?openagent& and select Bookmarks:Add Bookmark
- [other times] Bookmarks:Browse/Schedule, check the partial palmzip URL, action:Display URL
- append your .zip URL; e.g., complete URL might appear as: http://www.palmzip.com/palmzip.nsf/direct?openagent&http://www.memoware.com/foo.zip
- tap Newt's Cape button or select File:Open Location
- select link of desired .pdb or .prc file in result page
- note: component files that contain spaces require Newt's Cape 2.1a-2 (or later)
- (future? fix problem with form on the http://www.palmzip.com site)
- UnzipBMP Newt's Cape plugin
- download .zip file
- select a file to Extract
- status
- Newt's Cape status area displays conversion progress (for large files)
or possible errors:
- unknown helperApp
- plugin not installed
or unrecognized MIME type -- Newt's Cape doesn't download file
- unknown typeID
- it should be "TEXtREAd" for DOC (and TealDoc and RichReader),
or "vIMGView" for ImageViewer documents;
other formats not currently supported
- unknown header loc
- expected record header address not quite right
- header not recognized
- DOC record size not 4096;
perhaps not necessary, but I need test examples of valid docs where this isn't true...
- [1.0b2] bitdepth
- ImageViewer file does not specify b&w or 4- or 16-grays, or NOS 2.0 does not convert gray
- displayed book contains <tags> or control characters
- TealDoc and RichReader link/format embedded extensions not currently recognized/converted
- displayed book contains only title
- you're probably using an older version of Newt's Cape or don't have PilotDoc installed
- displayed book is truncated (and you have enough heap and storage)
- try a different page size (i:General:Page Size)
[built-in Newton text measurement sometimes breaks/truncates erroneously]
- book containing graphic not accessible by Avi's Backdrop
- set i:Other Options:BookISBN to begin with A!: and use Newt's Cape 2.0y-2 (or later)
- content display
- Newt's Cape displays a DOC as a plain text file in a book,
i.e., like a single, large PRE tag (change font info via i:Appearance:PRE)
- [1.0b2] Newt's Cape displays an ImageViewer document as a single graphic
- (future? convert "bookmarks" from plain DOC to Hx tags for TOC,
or other specific tag/link/format info from TealDoc or RichReader formats,
though this conversion to HTML would be adhoc and slow!; display multiple images or add note text)
- book title
- filename appears
- [Newt's Cape 2.0x-2 (or later)] original DOC/ImageViewer title appears
- caching
- original file cached if in Inbox, but not if transferred via http.
you can save resulting Newton book as package or to NewtWorks
Other Approaches to Viewing/Creation
If you'd like to read Palm DOCs on your Newton without using Newt's Cape for download or display,
you could
- download documents to your desktop
- use one of several desktop tools
http://www.memoware.com/mw-helpm.htm
to convert from DOC to a text file (or view or create DOC files)
- you could create a book using Newton Press, or a book-like application with Paperback,
or just download the text to Notes or Newtworks using your favorite connection tool
- convert PDF to DOC using Windows Acrobat plugin:
http://tinystocks.com/pdf2doc.html
If you'd like to view ImageViewer files on other platforms or create your own ImageViewer files,
see http://www.firepad.com/products/viewer/.
There is a large collection of plain text files at
Project Gutenberg.
It may be possible to create a simple Palm DOC file for the text of any web page, e.g.
palmpage; like .zip conversion earlier,
append your URL to: http://pilot.screwdriver.net/convert.cgi?url= Note: it's
probably best to do this on desktop; it may work directly
on Newton, though it is very s-l-o-w due to lack of file length info from server.
Change History
- 1.0d2 (5 Sep 00): if text contains <HTML> tag, prompts to display HTML or display text. e.g., for MobiPocket.com
- 1.0c2 (4 Jan 00): added MIME types; more .prc files should work; fixed -48210 errors
- 1.0b2 (15 Dec 99): ImageViewer support for b&w and grayscale images
- 1.0a2 (6 Dec 99): initial version
Download
© Copyright 1999-2002, S. Weyer. All Rights Reserved Worldwide.


ltrace ./program- Count library calls. Print a handy summary at the bottom:
ltrace -c path/to/program- Trace calls to malloc and free, omit those done by libc:
ltrace -e<EMAIL_ADDRESS>path/to/program- Write to file instead of terminal:
ltrace -o file path/to/program


Black and Hispanic Share of Baltimore's Population
No
Yes
Hover over a block group to see more.
Current Block Group
Black (%):
Hisp (%):
Demo Chart
Data Chart


Online Courses
HTML 5
JavaScript
On Campus Courses
Intro to Programming
CSS3
Hybrid Courses
Kendo UI
ASP.NET


s6
Software
skarnet.org
The s6-svscanctl program
s6-svscanctl sends commands to a running s6-svscan
process.
Interface
s6-svscanctl [ -phratszbnNiq0678 ] svscandir
s6-svscanctl sends the given series of commands to the
s6-svscan process monitoring the
svscandir directory, then exits 0. It exits 111 if it cannot send
a command, or 100 if no s6-svscan process is running on svscandir.
Options
- -p : poweroff mode. s6-svscan will exec into
./.s6-svscan/finish poweroff when it is told to terminate.
- -h : Hangup. s6-svscan will send a SIGHUP to all the
maintained s6-supervise processes, then run its finish procedure.
- -r : reboot mode. s6-svscan will exec into
./.s6-svscan/finish reboot when it is told to terminate. This
is s6-svscan's default mode.
- -a : Alarm. s6-svscan will immediately perform a scan
of svscandir to check for services.
- -t : Terminate. s6-svscan will send a
SIGTERM to all the s6-supervise processes supervising a service and a
SIGHUP to all the s6-supervise processes supervising a logger, then run its
finish procedure.
- -s : halt mode. s6-svscan will exec into
./.s6-svscan/finish halt when it is told to terminate.
- -z : destroy zombies. Immediately triggers s6-svscan's
reaper mechanism.
- -b : abort. s6-svscan will exec into its finishing
procedure. It will not kill any of the maintained s6-supervise processes.
- -n : nuke. s6-svscan will kill all the
s6-supervise processes it has launched but that did not match a service
directory last time svscandir was scanned, i.e. it prunes the
supervision tree so that it matches exactly what was in svscandir
at the time of the last scan. A SIGTERM is sent to the s6-supervise processes
supervising services and a SIGHUP is sent to the s6-supervise processes
supervising loggers.
- -N : Really nuke. Does the same thing as -n,
except that SIGTERM is sent to all the relevant s6-supervise processes, even
if they are supervising loggers. That means that the logger processes will
be killed with a SIGTERM instead of being allowed to exit at their own pace.
- -i : Interrupt. Equivalent to -rt : s6-svscan
will terminate in reboot mode.
- -q : Quit. s6-svscan will send all its s6-supervise processes
a SIGTERM, then exec into its finish procedure.
- -0 : Halt. Equivalent to -st : s6-svscan will
terminate in halt mode.
- -6 : Reboot. Equivalent to -i.
- -7 : Poweroff. Equivalent to -pt: s6-svscan will
terminate in poweroff mode.
- -8 : Other. s6-svscan will terminate in "other" mode.
Usage examples
s6-svscanctl -an /service
Updates the process supervision tree
to exactly match the services listed in /service.
s6-svscanctl -6 /service
Orders the s6-svscan process monitoring /service to exit in
reboot mode: all the supervision tree at /service will be terminated,
and s6-svscan will execute into the /service/.s6-svscan/finish
script with the reboot argument.
Internals
s6-svscanctl writes control commands into the svscandir/.s6-svscan/control
FIFO. A s6-svscan process running on svscandir will be listening to this FIFO,
and will read and interpret those commands.


--- layout: post title: Want more control over your database tables in DataMapper? date: '2009-02-24T07:23:00.007-08:00' author: Rimas Silkaitis tags: - datamapper modified_time: '2009-02-24T08:04:38.588-08:00' blogger_id: tag:blogger.com,1999:blog-6201986.post-2040719545017684716 blogger_orig_url: http://neovintage.blogspot.com/2009/02/want-more-control-over-your-database.html --- I had originally submitted a request to the DataMapper team to include an option to allow MySQL database users the ability to specify table options in their DataMapper models. My needs were around data warehousing and I wanted to use a different storage engine like Infobright. Unfortunately this request was denied because dm-core could have ended up looking like spaghetti if my request were approved. Mind you I'm oversimplifying the argument, but I understood where they were coming from. As a result, I bring you dm-mysql!
Plugin Name: dm-mysql
Summary: Plugin that allows MySQL DataMapper user the ability to specify MySQL table options when DataMapper creates database tables.
Requirements: Your DataMapper version must be > 0.9.10
Options: For available MySQL table options see the MySQL documentation. Note that this plugin was created against MySQL 5.1.
To Install: Make sure you have github listed as one of your sources.
sudo gem install neovintage-dm-mysql
require 'dm-core' require 'dm-mysql' # Shows available options class HasAllOption include DataMapper::Resource property :id, Serial property :name, String table_opts :engine => 'MyISAM', :avg_row_length => 7, :checksum => 1, :comment => "Best Comment EVER!!", :connection => 'another_connection', :data_directory => '/dude/wheres/my/dictionary', :delay_key_write => 0, :index_directory => '/index/this', :insert_method => 'FIRST', :key_block_size => 256, :max_rows => 5, :min_rows => 0, :pack_keys => 0, :password => 'secret', :row_format => 'COMPRESSED', :tablespace => 'DUDE', :union => 'has_its, not_includeds' end
As always, I appreciate any feedback on the code or any features that you'd like to see implemented as part of this.


Crawling@Home Dashboard
Worker: {{ c.display_name }}
Worker Type: {{ c.type }}
First Seen: {{ c.first_seen }}
Last Seen: {{ c.last_seen }}
Owner's Nickname: {{ c.user_nickname }}
{% if c.shard is none %}
Currently Working on Shard: (not currently working on a shard)
{% else %}
Currently Working on Shard: {{ '{:,}'.format(c.shard.number) }}
{% endif %}
Latest Progress Update: "{{ c.progress }}"
Total Shards Completed: {{ '{:,}'.format(c.jobs_completed) }}
JSON Format
Back


Performance guidelines
This document contains some performance guidelines that should be understood while developing
for the Multiverse project.
- Don't pay for what you don't use:
in some cases extra code is added to deal with certain functionality like
profiling or logging. This added functionality should not reduce the performance
of the STM when it is deactivated. Making effective use of dead code removal
executed by the JIT is one of the ways to make this possible. Another example
is creating different update-transaction implementations for specific transaction
lengths. This could replace an expensive map structure, by a much cheaper
array. For certain length the fixed-length array will outperform the map.
- Watch out for object creation in frequent executed loops: although the
new garbage collectors have improved over the years quite a lot, object creation
still can slow down the performance of some operation if millions of objects are
created per second.
-
volatile reads are cheap compared to volatile writes:
-
arrays are you friend: although they are seen as old school, they still
are very valuable. There are a few advantages like easy to process elements of
the array in parallel, there are also other advantages like a decreased size
of memory compared to a linkedlist and it also reduced object creation overhead.
To store 10 items in a linkedlist, you need to create at least 10 listnode objects, and
with an array you only need a single object.


Classes |
| class | RangeList |
| | Lists of ranges (intervals). More...
|
Public Member Functions |
| | IntVarImp (Space &home, int min, int max) |
| | Initialize with range domain.
|
| | IntVarImp (Space &home, const IntSet &d) |
| | Initialize with domain specified by d.
|
Protected Member Functions |
| RangeList * | fst (void) const |
| | Return first element of rangelist.
|
| void | fst (RangeList *f) |
| | Set first element of rangelist.
|
| RangeList * | lst (void) const |
| | Return last element of rangelist.
|
| void | lst (RangeList *l) |
| | Set last element of rangelist.
|
| | IntVarImp (Space &home, IntVarImp &x) |
| | Constructor for cloning x.
|
Protected Attributes |
| RangeList | dom |
| | Domain information.
|
| RangeList * | _lst |
| | Link the last element.
|
| unsigned int | holes |
| | Size of holes in the domain.
|
Range list access for iteration |
|
| const RangeList * | ranges_fwd (void) const |
| | Return range list for forward iteration.
|
| const RangeList * | ranges_bwd (void) const |
| | Return range list for backward iteration.
|
Value access |
|
| int | min (void) const |
| | Return minimum of domain.
|
| int | max (void) const |
| | Return maximum of domain.
|
| int | val (void) const |
| | Return assigned value (only if assigned).
|
| int | med (void) const |
| | Return median of domain (greatest element not greater than the median).
|
| unsigned int | size (void) const |
| | Return size (cardinality) of domain.
|
| unsigned int | width (void) const |
| | Return width of domain (distance between maximum and minimum).
|
| unsigned int | regret_min (void) const |
| | Return regret of domain minimum (distance to next larger value).
|
| unsigned int | regret_max (void) const |
| | Return regret of domain maximum (distance to next smaller value).
|
Domain tests |
|
| bool | range (void) const |
| | Test whether domain is a range.
|
| bool | assigned (void) const |
| | Test whether variable is assigned.
|
| bool | in (int n) const |
| | Test whether n is contained in domain.
|
| bool | in (long long int n) const |
| | Test whether n is contained in domain.
|
Domain update by value |
|
| ModEvent | lq (Space &home, int n) |
| | Restrict domain values to be less or equal than n.
|
| ModEvent | lq (Space &home, long long int n) |
| | Restrict domain values to be less or equal than n.
|
| ModEvent | gq (Space &home, int n) |
| | Restrict domain values to be greater or equal than n.
|
| ModEvent | gq (Space &home, long long int n) |
| | Restrict domain values to be greater or equal than n.
|
| ModEvent | nq (Space &home, int n) |
| | Restrict domain values to be different from n.
|
| ModEvent | nq (Space &home, long long int n) |
| | Restrict domain values to be different from n.
|
| ModEvent | eq (Space &home, int n) |
| | Restrict domain values to be equal to n.
|
| ModEvent | eq (Space &home, long long int n) |
| | Restrict domain values to be equal to n.
|
Domain update by iterator |
Variable domains can be both updated by range and value iterators. Value iterators do not need to be strict in that the same value is allowed to occur more than once in the iterated sequence.
The argument depends must be true, if the iterator passed as argument depends on the variable implementation on which the operation is invoked. In this case, the variable implementation is only updated after the iterator has been consumed. Otherwise, the domain might be updated concurrently while following the iterator.
|
| template<class I > |
| ModEvent | narrow_r (Space &home, I &i, bool depends=true) |
| | Replace domain by ranges described by i.
|
| template<class I > |
| ModEvent | inter_r (Space &home, I &i, bool depends=true) |
| | Intersect domain with ranges described by i.
|
| template<class I > |
| ModEvent | minus_r (Space &home, I &i, bool depends=true) |
| | Remove from domain the ranges described by i.
|
| template<class I > |
| ModEvent | narrow_v (Space &home, I &i, bool depends=true) |
| | Replace domain by values described by i.
|
| template<class I > |
| ModEvent | inter_v (Space &home, I &i, bool depends=true) |
| | Intersect domain with values described by i.
|
| template<class I > |
| ModEvent | minus_v (Space &home, I &i, bool depends=true) |
| | Remove from domain the values described by i.
|
Dependencies |
|
| void | subscribe (Space &home, Propagator &p, PropCond pc, bool schedule=true) |
| | Subscribe propagator p with propagation condition pc to variable.
|
| void | reschedule (Space &home, Propagator &p, PropCond pc) |
| | Re-schedule propagator p.
|
| void | subscribe (Space &home, Advisor &a, bool fail) |
| | Subscribe advisor a to variable.
|
Cloning |
|
| IntVarImp * | copy (Space &home) |
| | Return copy of this variable.
|
Variable implementation-dependent propagator support |
|
| static ModEventDelta | med (ModEvent me) |
| | Translate modification event me to modification event delta for view.
|
Delta information for advisors |
|
| static int | min (const Delta &d) |
| | Return minimum value just pruned.
|
| static int | max (const Delta &d) |
| | Return maximum value just pruned.
|
| static unsigned int | width (const Delta &d) |
| | Return width of values just pruned.
|
| static bool | any (const Delta &d) |
| | Test whether arbitrary values got pruned.
|
Integer variable implementation.


--- layout: documentation title: ICMPv4HeaderType ---
Actual ICMP header bytes are defined, corresponding to the ICMP type, ICMP code, and to the checksum.
| Field Name | Type | Description |
|---|---|---|
| Type0..1 | HexBinaryObjectPropertyType |
ICMP Type byte specifies the format of the ICMP message. |
| Code0..1 | HexBinaryObjectPropertyType |
ICMP Code byte further qualifies the ICMP message. |
| Checksum0..1 | HexBinaryObjectPropertyType |
ICMP Checksum (16 bits) covers the ICMP message. |