Apache Subversion 1.9 is a superset of all previous Subversion releases, and is as of the time of its release considered the current "best" release. Any feature or bugfix in 1.0.x through 1.8.x is also in 1.9, but 1.9 contains features and bugfixes not present in any earlier release. The new features will eventually be documented in a 1.9 version of the free Subversion book (svnbook.red-bean.com).
This page describes only major changes. For a complete list of changes, see the 1.9 section of the CHANGES file.
Older clients and servers interoperate transparently with 1.9 servers and clients. However, some of the new 1.9 features may not be available unless both client and server are the latest version. There are also cases where a new feature will work but will run less efficiently if the client is new and the server old.
There is no need to dump and reload your repositories. Subversion 1.9 servers can read and write to repositories created by earlier versions. To upgrade an existing server installation, just install the newest libraries and binaries on top of the older ones.
Subversion 1.9 maintains API/ABI compatibility with earlier releases, by only adding new functions, never removing old ones. A program written to any previous 1.x API can both compile and run using 1.9 libraries. However, a program written for 1.9 cannot necessarily compile or run against older libraries.
There may be limited cases where the behavior of old APIs has been slightly modified from previous releases. These are cases where edge cases of the functionality has been deemed buggy, and therefore improved or removed. Please consult the API errata for more detailed information on what these APIs are and what impact these changes may have.
| New Feature | Minimum Client1 | Minimum Server | Minimum Repository | Notes |
|---|---|---|---|---|
| Prospective blame | 1.9 | 1.8 | any | |
| FSFS format 7 | any | 1.9 | 1.9 | Older formats remain supported. |
| Lock HTTP pipelining | 1.9 | 1.2 | 1.2 | |
| Commit unlocking | 1.2 | 1.9 | 1.2 | |
| Locking multiple files | 1.3 | 1.9 | 1.2 | Over the svn:// protocol. |
| FSX | any | 1.9 | 1.9 | Will not be compatible with 1.10 |
| 1Reminder: when using the file:// repository access method, the Subversion program is both the client and the server. |
Subversion 1.9 uses the same working copy format as Subversion 1.8.
Before using Subversion 1.9 with an existing Subversion 1.7 or older working copy, users will be required to run the svn upgrade command to upgrade working copy metadata to the new format. This command may take a while in some cases, and for some users, it may be more practical to simply checkout a new working copy.
Note: Subversion 1.9 cannot upgrade working copies that a 1.6 client would have refused to operate upon before an svn cleanup was run (with a 1.6 client). In other words, before upgrading to 1.9, a 1.6 or older client must be used to run svn cleanup on all 1.6 or older working copies that require cleanup. Likewise, Subversion 1.9 cannot upgrade corrupt working copies. Unfixable problems can arise from missing or corrupt meta-data inside .svn directories. Such damage to the working copy is permanent, and cannot be fixed even if svn cleanup is run prior to the upgrade.
If your working copy does not upgrade cleanly, please check out a new one.
The Python programming language is an optional dependency. It is required for running the test suite and for building nightly versions, but not for building from packaged releases.
Subversion 1.8 supported Python 2.5 and newer. Subversion 1.9 requires Python 2.7. Older versions of Python are no longer guaranteed to work.
We break compatibility with Python 2.6 and older since it has been end-of-life for nearly two years, and in order to introduce compatibility with Python 3.x in patch releases of the 1.9.x line.
There are some additional specific areas where changes made in this release might necessitate further adjustment by administrators or users. We'll cover those in this section.
The next minor release after 1.9.0 will be numbered 1.10.0.
Since "1.10.0" is smaller than "1.9.0" when considered as ASCII strings, scripts that compare Subversion versions as strings may fail to correctly determine which of "1.10.0" and "1.9.0" is the more recent one. Such scripts should be changed to compare Subversion version numbers correctly: as tuples of integers, with an optional suffix for development or pre-release versions. See the Subversion release numbering documentation for details. (Programs written against the C API or the various bindings should refer to the svn_version_* interfaces.)
The next patch releases on the 1.9.x line will be numbered 1.9.1, 1.9.2, …, as usual.
The default filesystem format is now a new format, numbered 7. (The new command svnadmin info displays the filesystem format number of a repository.) In contrast to previous releases, format 7 is a major overhaul with the general goal of I/O reduction. Major changes include:
As with earlier releases, you may simply run svnadmin upgrade on your repository. However, the new addressing, checksumming and packing scheme will not be used in that case but only in repositories that got created as format 7. For best performance and to enable all features, it is recommended to perform a full dump / load cycle. You can tell whether all format 7 features are enabled by looking for FSFS Logical Addressing: yes in the output of svnadmin info: if that line is printed, then the repository has all format 7 features enabled.
WARNING: Server restart required! Replacing an existing repository with one rebuilt from a dump or restored from backup requires a server restart. This is true for any repository format. Alternatively, you may store the new repository in a different directory and redirect the Apache configuration to use that instead of the old one; svnserve does not offer that option.
The next subsection compares performance characteristics of repositories created directly as format 7 with those upgraded to format 7 from older formats.
The FSFS changes in 1.9 are aimed at better service quality and do not translate into client-side features being available or not. Depending on your setup, some of the improvements may be relevant while others are not. This table shall help you decide what features are relevant to your environment and whether you need to upgrade or dump and load your repositories to reap the benefits.
| Feature | Format 6 or older |
Upgraded to format 7 from older formats |
Created as format 7 not packed |
Created as format 7 packed |
|---|---|---|---|---|
| Reduction in dynamic memory usage1 | yes | yes | yes | yes |
| Saturate 10Gb networks from SVN caches2 | yes | yes | yes | yes |
| Saturate 1Gb networks from OS caches3 | yes | yes | yes | yes |
| svnadmin pack does not block commits | no | yes | yes | yes |
| Full checksum coverage of revision data4 | no | no | yes | yes |
| Quick verification to find external corruption5 | no | no | yes | yes |
| Fast access to cold data on disk6 | no | no | no | yes |
1 Where feasible, temporary buffers have a fixed maximum size now. Other temporary containers have been reduced in memory consumption. 2 If almost all requests can be served from SVN fulltext caches etc., an 8-core server running Apache can saturate a 10Gb network with uncompressed data. It will take 20+ concurrent checkout or export requests to generate that load. 3 If virtually all requests can be served from the OS file cache, a 4-core server running Apache can saturate a 1Gb network with uncompressed data. It will take 2 or more concurrent checkout or export requests to generate that load. 4 Not only user file contents, directories and properties are protected by checksums but also the meta-data tying them together. This only detects external corruption caused by rogue scripts, hard disk failure etc. and will not help against internal corruption caused by faulty SVN logic. 5 Verifies a repository at several 100MB/s and does not slow down with increasing number of revisions. This allows for a much faster health check after system failure. 6 Core feature of format 7. Revision data is read about twice as fast as with older formats. Assuming reading data from disk being 10x slower than from OS caches and a mere 10% OS cache misses, this translates into 30% higher overall throughput with format 7 over previous formats. |
Most users will want to not only svnadmin upgrade to migrate their repositories but to eventually migrate them to format 7. For some, it will be the fast verification feature, others will need the disk I/O improvements. Note that the key I/O characteristics here is the Bandwidth Delay Product of your storage, which is usually between 100kB and 1MB. Even with SSDs you will see a speed-up, unless your storage bandwidth is severely limited.
There is no appreciable difference in CPU usage between the new format and the older ones. Hence, the few setups that work almost entirely from RAM due to very large caches will see little extra performance with format 7. These environments will still benefit from the improved checksum coverage and the support for quick verification.
Make sure to run svnadmin pack on your format 7 repositories at regular intervals. Otherwise, you'll waste performance.
New configuration options are available for tuning read block sizes (format 7 only). They may be changed at any time without causing consistency issues with existing revisions. Changing them is rarely necessary, but may result in slightly improved performance with your specific storage backend or when dealing with multi-TB repositories. See the commentary in fsfs.conf for more information. (You may have to create a new repository to see the documentation about these settings in fsfs.conf.)
[io] block-size = 256 l2p-page-size = 32768 p2l-page-size = 16384
FSFS uses a combination of two methods to reduce on-disk data size. First, we determine the changes (delta) against some previous version of the same file. This process can be controlled by fsfs.conf settings since 1.8. The result would then be compressed using ZIP/deflate.  You may now specify the compression level in fsfs.conf or disable compression entirely:
[deltification] compression-level = 0
Directory and property deltification are now enabled by default for FSFS repositories in 1.6 format or newer. Various optimizations were added to the delta creation code to minimize the read amplification effect and to provide a net speedup when using deltification vs. not using it. Keep txdelta caches enabled when using directories deltification. Otherwise, you may suffer a significant performance hit.
To prevent Subversion 1.9 from deltifying properties and directories in older format repositories, set the following options in the repository’s fsfs.conf file:
[deltification] enable-dir-deltification = false enable-props-deltification = false
The caching logic has been enhanced to cope with the extra load caused by the access indirection introduced in FSFS format 7. While most of this simply means more net speed, some changes may affect your configuration settings.
Where the svnadmin tool covers typical administrative tasks in a mostly back-end agnostic way, svnfsfs is a specialist tool for analyzing and manipulating of FSFS repositories. It is not intended for everyday use.
The fsfs-stats tool first released with Subversion 1.8 has been replaced by the svnfsfs stats sub-command and is no longer part of Subversion 1.9. Both produce similar output.
During forensics or data recovery, it is necessary for experts to directly "look into" the raw database files. While the FSFS on-disk format is fully documented, the indirect addressing and reordering added in format 7 makes it hard for humans to trace internal references. This is where the svnfsfs dump-index sub-command is used. It produces a table describing all items in revision and pack files:
$ svnfsfs dump-index /path/to/repo -r0 Start Length Type Revision Item Checksum 0 11 drep 0 3 60232b75 11 59 node 0 2 403dbe48 6a 1 chgs 0 1 f28a4f1d
Because the index information must always match the actual file contents, updating the index data after every revision / pack file manipulation is mandatory in format 7. svnfsfs load-index allows you to do that. It consumes the same table format as produced above, except that the checksum field is optional and will be ignored if given. See the known issues list for problems in released versions of that tool.
WARNING: Be sure to create a backup of your repository before trying to manipulate it through svnfsfs !
In 1.9.0, the svnfsfs load-index does not work as described in its documentation. The following restrictions and workarounds apply:
Start Length Type Revision Item 0 0 none 3000 0 0 25a chgs 3999 1 25a 3b9 chgs 3998 1 ...
These problems have been fixed in 1.9.1.
Since its inception 10 years ago, FSFS has been improved greatly and the improvements provided with format 7 are another major step forward. However, there are limits to what can be done in a meaningful and backward compatible way. FSX is being designed to overcome these limitations. Here some of the intended improvements:
Development of FSX was started as a fork of FSFS to guarantee functional completeness and testability. The current code still contains remnants of FSFS legacy code and not all of the above improvements have been implemented yet. Later releases will close the gap and remove transitional code.
WARNING: FSX is NOT production ready. DO NOT USE IT – unless you have read this section carefully and understand the limitations of FSX in Subversion 1.9.
FSX is nowhere near as stable and reliable as FSFS. Furthermore, there will be no support for 1.9-style FSX repositories in 1.10 (see Incompatibility). Think, therefore, of all data in a FSX repository as being potentially corrupt. Its improved performance and storage characteristics, though, might make FSX a viable option for the following use-cases:
If you experiment with FSX, please let us know your findings. This is your chance to get your use-case covered before storage format and principles of operation are set in stone.
The FSX code and storage representation is in an intermediate state with respect to the feature set that its developers have in mind. For as long as it keeps its experimental status, there will be neither forward nor backward compatibility between FSX repositories of different Subversion feature releases. Subversion 1.10 and later will recognize 1.9 FSX repositories and error out on them. You may use dump and load to upgrade an FSX repository from one release to another.
Dump and load is also the only upgrade path between FSFS and FSX.
Finally, there is no guarantee that FSX will eventually be released at all; as an experimental backend, we make no promise that future releases will support reading or writing FSX repositories.
The new svn auth sub-command can be used to view or remove authentication credentials saved in any of the supported password caches. Authentication credentials include usernames, passwords, SSL certificates, and SSL client-certificate passphrases.
Specific credentials can be selected with an arbitrary number of pattern arguments which are matched against the attributes of each credential. For example, view cached SSL certificates for the apache.org domain, matched via credential kind (svn.ssl.server) and authentication realm and certificate subject (apache.org):
$ svn auth svn.ssl.server apache.org ------------------------------------------------------------------------ Credential kind: svn.ssl.server Authentication realm: https://svn.us.apache.org:443 Subject: C=US, ST=Maryland, L=Forest Hill, O=The Apache Software Foundation, OU=Infrastructure, CN=*.apache.org Valid from: 2015-04-29 02:00:00 +0200 (Wed, 29 Apr 2015) Valid until: 2017-04-30 01:59:59 +0200 (Sun, 30 Apr 2017) Issuer: C=US, O=Symantec Corporation, OU=Symantec Trust Network, CN=Symantec Class 3 Secure Server CA - G4 Fingerprint: 4ad722dd0442043657d176f9c81aab66094d4223 Hostnames: *.apache.org Automatic certificate validity check failed because: The certificate's Common Name (hostname) does not match the remote hostname. Credentials cache in '~/.subversion' contains 1 matching credentials
For more information, see svn help auth.
The svn info command can now display the value of one of the fields and nothing else, for easier consumption by scripts.
Subversion 1.8 and earlier had two output modes: the default, human-oriented output, mode and the XML mode for scripted use. Subversion 1.9 adds a third output mode, whereby exactly one attribute will be displayed:
## Display the youngest revision of a repository: % svn info --show-item=revision https://svn.apache.org/repos/asf/subversion/trunk 1693514 ## Find the root directory of a working copy: % svn info --show-item=wc-root /home/jrandom/src/svn/trunk
Incidentally, Subversion will also attempt to offer the correct selector name if the argument was misspelled:
% svn info --show-item=wcroot svn: E205000: Try 'svn help info' for more information svn: E205000: 'wcroot' is not a valid value for --show-item; did you mean 'wc-root'?
The list of valid arguments to --show-item may be found in its help message, svn help info. As of 1.9, the valid values are kind, url, relative-url, repos-root-url, repos-uuid, revision, last-changed-revision, last-changed-date, last-changed-author, and wc-root.
The --no-newline argument instructs svn not to emit a cosmetic newline (\n) after the value.
The svn propget sub-command has a new --no-newline option. It is equivalent to the old --strict option which is now deprecated.
The new --trust-server-cert-failures option is intended to be used by scripts which for some reason must accept SSL certificates which fail validation for various reasons (e.g. expired certificates).
If at all possible, fixing a certificate problem is preferable to using this option.
The --trust-server-cert-failures option only works in conjunction with the --non-interactive option.
Previous versions of Subversion in non-interactive mode could only ignore certificates with an unknown certificate authority, but expired or otherwise invalid SSL certificates could not be accepted.
The svn copy sub-command now supports a new --pin-externals option. Use of this option is recommended when creating tags.
If this option is used, svn copy pins the URLs in svn:externals properties in the copied tree to their current revision, such that externals keep their current contents when the copied tree is checked out at a later time.
Note that external references within externals cannot be pinned as this would require svn copy to make commits to any foreign repositories referenced by externals.
The svn cleanup command has new --remove-unversioned and --remove-ignored options which can be used to remove unversioned and ignored files from the working copy.
svn cleanup can now recurse into externals with the new --include-externals option.
In the interactive conflict resolver, the (m) merge command now tries an external file merge tool if one is defined. Else the internal file merge tool is used.
In Subversion 1.8, the (m) merge command always triggered the internal file merge tool. The (i) internal merge tool command was added to Subversion 1.9 and has the old meaning of the (m) merge command.
The status command, when given the --show-updates (-u) flag, can now compare the working copy to specific remote revision, given by the -r (--revision) flag. (Previously, the remote revision would default to HEAD.)
Our best practices suggest that projects should branch and merge at the project root level. Each merge will then usually change the svn:mergeinfo property at the project base folder. To commit that change, pre-1.9 servers require the client to have the latest version of that base folder. Whenever there is a commit in that tree, its base folder will get a new revision as well, though. Thus, in large, busy projects, it is likely that by the time a large merge commit would actually have reached its finalization phase, some other commit got through and the merge commit is rejected for being out of date.
Subversion 1.9 now allows to modify directory properties based on old revisions as long as the directory contents itself did no change. Directory contents changes would either be property changes, added or removed entries. Sub-tree or file contents changes no longer prevent the property change from going through. Of course, true file and tree change conflicts will still result in out-of-date errors.
This new behavior is not restricted to svn:mergeinfo changes but applies to any directory properties. Changes to svn:ignore are another common scenario previously prone to update / commit / out-of-date races.
In threaded mode, svnserve starts one thread per network connection - potentially consuming a large amount of resources. Subversion 1.9 now uses a thread pool with a configurable minimum and maximum number of threads. Use the command line options --min-threads and --max-threads if the defaults don't suite your needs.
Once there are more connections than threads, the threads will serve incoming requests in a round-robin fashion. If all those requests are long-running reports like checkout or export, connections with waiting requests may eventually time out.
Whether or not the new options are available depends on the platform and APR capabilities. Also, the default for --max-threads is lower on 32 bit systems than on 64 bit ones. Run svnserve --help to see your system's defaults and whether the options are available at all.
This prints detailed format information for the given repository.
$ svnadmin info /repos/apache/ Path: /repos/apache UUID: ac336b0e-000b-11e0-b354-23d019ddd9ed Repository Format: 5 Compatible With Version: 1.8.0 Repository Capability: mergeinfo Filesystem Type: fsfs Filesystem Format: 6 FSFS Sharded: yes FSFS Shard Size: 1000 FSFS Shards Packed: 1631/1631 FSFS Logical Addressing: no Configuration File: /repos/apache/db/fsfs.conf
Packing now takes a cache size parameter (-M) which is used for efficient operation on FSFS format 7 repositories.
$ svnadmin pack -M 1000 /path/to/repository
Packing is paramount to FSFS format 7 performance; do it often. To make this feasible, packing FSFS format 7 repositories will no longer block commits for the whole time of its execution. Instead, individual commits may now get delayed by much shorter periods of time, usually by less than one second.
Verification will terminate by default once a problem has been found. The new --keep-going option instructs svnadmin to continue with the next revision such that multiple issues may be found in a single run. If a revision has multiple issues and depending on the verification logic, still only the first problem may be reported.
The new --check-normalization option reports any path names within the same directory or svn:mergeinfo property which differ only in character representation (e.g. Unicode precomposed and decomposed character representations), but are otherwise identical.
Thorough verification is expensive and becomes slower as the repository history grows. The new --metadata-only flag will skip the expensive internal consistency checks and reconstruction of all user data. In format 7 repositories, this will still perform a quick on-disk checksum test of all data in rev / pack files but will only detect cases where external forces (storage crash, rogue scripts etc.) modified committed data. Also, the checksums are weaker (about a 1 in a billion chance that a random change remains undetected) than the ones used to protect the user data. If you suspect internal repository corruption caused by a bug within SVN itself, you still need to run a full verification.
The setrevprop command now takes the --transaction flag. It can be used from pre-commit hooks to set revision properties on the transaction (commit-in-progress) before it becomes a commit.
The new delrevprop command deletes a revision property from either a revision or a transaction. It complements setrevprop which adds or modifies revprops.
The svnadmin load command has a new flag, --ignore-dates, which causes it to ignore revision datestamps (svn:date) in the input dumpfile.
With Subversion 1.9 this tool is now part of the standard set of SVN binaries. In keeping with the existing programs, it has been renamed to svnbench.
To investigate bottlenecks in svn blame, we added a protocol driver variant of it to svnbench. The new null-blame sub-command requests the same data from the server as the normal command line client and shows a summary of the amount of data received.
$ svnbench null-blame -g http://example.org/repo/path/to/file 34 revisions 31 deltas 1,161,077 bytes in deltas
When a text conflict occurs (and is not resolved by the interactive conflicts resolver during svn update, svn switch or svn merge), conflicts markers are written into the conflicted file. Previous versions of Subversion would render conflict markers as follows:
Unconflicted lines <<<<<<< .mine Contents of the file in the working copy (including local modifications) ======= Contents of the file in the revision being updated to >>>>>>> .r2 Unconflicted lines
As of Subversion 1.9, conflict markers would be rendered with information on the base (called "older" in diff3 parlance):
Unconflicted lines <<<<<<< .mine Contents of the file in the working copy (including local modifications) ||||||| .r1 Contents of the file in the working copy's BASE revision ======= Contents of the file in the revision being updated to >>>>>>> .r2 Unconflicted lines
Here, one resolves the conflict by manually applying to the <<<<<<< hunk the same changes that would transform the ||||||| hunk into the >>>>>>> hunk. For example, the following conflict:
Unconflicted lines <<<<<<< .mine "Hello hello, world!" ||||||| .r1 "Hello, world!" ======= "Hello, ${name}!" >>>>>>> .r2 Unconflicted lines
should be resolved to:
Unconflicted lines "Hello hello, ${name}!" Unconflicted lines
The three-way conflict display was already used by property conflicts and by the interactive conflicts resolver in previous releases of Subversion.
The old, two-way conflict markers output can be obtained by setting diff3-cmd in the Subversion runtime configuration (or via the --config-option or --diff3-cmd command-line options) to a diff3 command that generates two-way conflict markers. Your system may already include such a diff3 program; one is also included with Subversion and can be installed via make install-tools (Unix) or by building the diff3 or __MORE__ targets (Windows). On a typical Unix system, simply setting diff3-cmd=diff3 will restore two-way conflict markers.
Subversion 1.9 adds to the included diff3 program a --conflict-style marker that can be used to explicitly choose among two-way conflict markers, three-way conflict markers, and a few other options. That program can be used independently of Subversion anywhere a diff3 command is needed.
The blame command can now show not only when the last change to each line of a given file was, but also when the next change will be.
For example, to see for each line in revision 3 of README.txt what the next revision that changed (or removed) that line would be, run svn blame -r HEAD:3 README.txt. (You may need to pass a peg revision if the file had been renamed since r3.)
In the blame command, the range -r M:N always means "display information about the file at revision N". If the range is "forward" (M<N) then the normal blame algorithm is used, displaying for each line in the file when it was added or last changed; if the range is "reversed" (M>N) then the above-described sense is used, describing for each line in rN when it was first changed (or deleted) after rN and before rM.
Here is an example, from Subversion's own repository. The autoconf macro SVN_CHECK_FOR_DUNDER_BUILTINS was present in r1509167 but is not present in HEAD. The blame command can determine the revision in which the macro was removed:
% svn blame -r HEAD:1509167 svn-macros.m4 ⋮ 1509168 danielsh AC_DEFUN([SVN_CHECK_FOR_DUNDER_BUILTINS],
And indeed, svn diff -c r1509168 shows that revision deleting the definition of the macro.
When locking, or unlocking, multiple files in a single operation over HTTP the client will use HTTP pipelining for the individual WebDAV LOCK and UNLOCK requests. This makes the operation faster particularly on connections with large network latency. While HTTP pipelining is new for LOCK and UNLOCK the client was already using it for GET requests.
Subversion locks, the locks that prevent commits from other working copies, are stored in the repository. When adding or removing locks the FSFS backend can now operate on several locks at once. This reduces the amount of disk IO when handling multiple locks and is significant when the total number of locks in the repository is large, 100,000 say.
The default behaviour for commits is to automatically release locks after a successful commit and this takes advantage of the more efficient lock process. In previous releases the disk IO involved in releasing the locks would sometimes be greater than that involved in creating the new revision.
Clients using the svn:// protocol will also benefit from the more efficient lock handling when locking or unlocking multiple files in a single operation. Clients using HTTP will not get this benefit since the client still sends multiple, pipelined, LOCK and UNLOCK requests, one for each file.
The post-lock and post-unlock hooks receive multiple paths via standard input. In previous releases the repository backends always operated on a single path at a time so only one path was ever passed to the hook. In 1.9 when multiple paths are locked or unlocked in a single operation multiple paths will be passed to the hook.
The pre-lock and pre-unlock hooks continue to be passed a single path as a parameter.
Subversion's Apache module, mod_dav_svn, can display statistics that describe the status of the FSFS cache for the running Apache instance. To enable this define a Location block in the Apache configuration file:
<Location /svn-status> SetHandler svn-status </Location>
Visiting the Location with a web browser will display statistics about the FSFS cache for the running Apache instance. If Apache is configured to use multiple processes, most Unix deployments, the statistics will only apply to the process that served the GET request and repeating the request will cause different processes to be queried.
There are some known issues in the Subversion 1.9 releases. These may be fixed in later 1.9.x releases.
See issue #4598 "No-op changes no longer dumped by 'svnadmin dump' in 1.9".
It has always been possible, in atypical cases, for a commit to mark a file as 'changed' without actually changing the file's text and/or properties to a different value. Starting from 1.9.0, svnadmin dump still outputs a record for such a file, including a header saying that the action is 'change', but no longer appends a block describing the new text for the file. (And similarly for properties, perhaps? TBD.) When svnadmin load (1.8 or 1.9) reads this dumpfile, it does not record any change in the repository for such a file.
One user-visible effect is that, after dump and load, 'svn log -v' will no longer list the path of such a file in its list of 'changed paths'.
A fix for this problem has been included in the 1.9.3 release.
If there are concurrent commits to the same repository, they may randomly fail with an "out of date" error message without actually being in conflict. The problem presents itself to the user like any legitimate out-of-date condition and retrying the commit as usual will fix the problem.
This problem is not new to Subversion 1.9 and limited to repositories with high commit frequencies. Triggering it requires either pre-1.7 clients, a pre-1.7 server or a server that has HTTPv2 explicitly disabled via the SVNAdvertiseV2Protocol off option. To avoid the problem, consider upgrading clients and configuring the server to use the HTTPv2 protocol.
svnserve and local repository access are not affected.
Subversion up to and including 1.9.5 can incorrectly store files with different content but the same SHA1 checksum. We recommend that all servers update to 1.9.6 and enable representation sharing. See our SHA1 advisory for details.
Subversion 1.9 introduces new features and makes use of new techniques which can trigger problems not encountered in previous versions. In contrast to known issues, things listed here are not due to some bug or issue in Subversion itself and therefore cannot be fixed with a new patch release. This section lists all known problems and provides instructions to solve them, if they occur.
Subversion 1.9.0 introduces the use of HTTP pipelining for locking/unlocking multiple files. While SVN detects whether HTTP pipelining is supported (and falls back to non HTTP pipelining mode, if it isn't), issues can arrise, if there are flaws or bugs with any of the protocols/applications involved in processing pipelined HTTP requests.
Especially, if there are older proxies present in the network topology, it's possible that you run into issues, since being a technology which was introduced in HTTP/1.1 (and the full performance benefit is not expected unless you are using HTTP/2), this feature might have not been extensively tested by your proxy vendor.
To troubleshoot whether the proxy is causing an issue, try to lock/unlock multiple files bypassing the proxy. If that works, please get in touch with the proxy vendor to notify him about the problem and ask for support.
It's also appreciated, if you would let the SVN developers know about the effected proxy via the users mailing list so this troubleshooting section can be updated.
At the moment there is one potentially known proprietary proxy running into this issue: Java-SSL-tunnel. See Tortoise SVN mailing list .
The Subversion 1.7.x line is no longer supported. This doesn't mean that your 1.7 installation is doomed; if it works well and is all you need, that's fine. "No longer supported" just means we've stopped accepting bug reports against 1.7.x versions, and will not make any more 1.7.x bugfix releases.


We did our best to cover all topics related to this product. Each section have number which represent number of topic in each category.
Couldn’t find what your are looking for ? Why not join out community forums and let us help you.
If you have question which is beyond this knowledgebase Kindly contact us


Submitting Patches¶
Before developing a patch for pgAdmin you should always contact the developers on the mailing list<EMAIL_ADDRESS>to discuss your plans. This ensures that others know if you’re fixing a bug and can then avoid duplicating your work, and in the case of large patches, gives the community the chance to discuss and refine your ideas before investing too much time writing code that may later be rejected.
You should always develop patches against a checkout of the source code from the GIT source code repository, and not a release tarball. This ensures that you’re working with the latest code on the branch and makes it easier to generate patches correctly. You can checkout the source code with a command like:
$ git clone git://git.postgresql.org/git/pgadmin4.git
Once you’ve made the changes you wish to make, commit them to a private development branch in your local repository. Then create a patch containing the changes in your development branch against the upstream branch on which your work is based. For example, if your current branch contains your changes, you might run:
$ git diff origin/master > my_cool_feature.diff
to create a patch between your development branch and the public master branch.
You can also create patches directly from the development tree, for example:
$ git diff > my_cool_feature.diff
If you are adding new files, you may need to stage them for commit, and then create your patch against the staging area. If any of the files are binary, for example, images, you will need to use the –binary option:
$ git add file1.py file2.py images/image1.png [...]
$ git diff --cached --binary > my_cool_feature.diff
Once you have your patch, check it thoroughly to ensure it meets the pgAdmin Coding Standards, and review it against the Code Review Notes to minimise the chances of it being rejected. Once you’re happy with your work, mail it as an attachment to the mailing list<EMAIL_ADDRESS>Please ensure you include a full description of what the patch does, as well as the rationale for any important design decisions.


Kanye West reveals plot details and ticket information for his Christian opera ‘Nebuchadnezzar’
Front row seats will cost over $600
With the debut of his new show, ‘Nebuchadnezzar’, this weekend, more details have now emerged about Kanye West‘s Christian opera extravaganza.
The show was officially announced earlier this week, after West tweeted an image of the event’s invite. It takes place this Sunday at The Hollywood Bowl.
Now, a press release gives further information about the show’s plot, and describes it as an “innovative performance” that incorporates multiple art forms.
“Nebuchadnezzar is an original opera, based on the biblical story of the Babylonian King from the Book of Daniel,” the press release reads.
“Set in the 6th century BC, the Book of Daniel recounts Nebuchadnezzar’s transition from wicked, imperious, self-declared ruler to a true believer who finds salvation in his faith.
“West conceived of this opera as an expression of his commitment to both his faith and ever-expanding musical palette. Nebuchadnezzar brings together elements from different worlds, including opera, fine art, modern dance, and gospel music, to create an innovative performance structure. West’s sound is the bridge between these artforms.”
The show sees West team up with Vanessa Beecroft, a conceptual performance artist and frequent collaborator with the rapper. Tickets are on sale now, with prices ranging between $20 and $600.
Meanwhile, West is set to continue his journey into religious music in the form of a sequel to his recent album ‘Jesus Is King’, this time featuring Dr Dre.


All mentioned rates are only for return rides from Colombo region/greater Colombo.
Rates given do not include parking or highway tolls.
Distance and duration exceeding the package limit will be charged as follows:
Please contact 1331 for more information.
Will get back to you on confirmation.


{% extends "checkout/preview.html" %} {% load currency_filters %} {% load i18n %} {% load url from future %} {% load thumbnail %} {# Null out the actions as they can't be used here #} {% block shipping_address_actions %}{% endblock %} {% block shipping_method_actions %}{% endblock %} {% block order_contents_actions %}{% endblock %} {% block payment_method %}
On the next page you will be prompted for payment details. {{ order_total.incl_tax|currency:basket.currency }} will be charged to your selected card.


Task 1
(For some reason "Trump" appears really small comapred to the rest even thought it should be the largest word.)
Task 2
There was a problem parsing and massaging the data from Task 2 :C
Task 3
Task 4
Task 5
Task 6


|
Solar
|
Retrieve synchronized sensor images and poses from an external device (ie. HoloLens). UUID: 999085e6-1d11-41a5-8cca-3daf4e02e941
More...
#include <IARDevice.h>
Public Member Functions | |
| IARDevice ()=default | |
| Specify the IARDevice constructor class. | |
| virtual | ~IARDevice ()=default |
| Specify the IARDevice destructor class. | |
| virtual FrameworkReturnCode | getData (std::vector< SRef< SolAR::datastructure::Image > > &images, std::vector< SolAR::datastructure::Transform3Df > &poses, std::chrono::system_clock::time_point ×tamp)=0 |
| Retrieve a set of images and their associated poses from the sensors as well as timestamp. More... | |
| virtual const SolAR::datastructure::CameraRigParameters & | getCameraParameters () const =0 |
| Get parameters of a camera rig. More... | |
| Public Member Functions inherited from SolAR::api::input::devices::IDevice | |
| IDevice ()=default | |
| Specify the IDevice constructor class. | |
| virtual | ~IDevice () override=default |
| Specify the IDevice destructor class. | |
| virtual FrameworkReturnCode | start ()=0 |
| Start the acquisition device referenced by its device_id. More... | |
| virtual FrameworkReturnCode | stop ()=0 |
| Stop the acquisition device. More... | |
Retrieve synchronized sensor images and poses from an external device (ie. HoloLens). UUID: 999085e6-1d11-41a5-8cca-3daf4e02e941
This class describes the interface for retrieving data from a AR device that provides.
|
pure virtual |
Get parameters of a camera rig.
|
pure virtual |
Retrieve a set of images and their associated poses from the sensors as well as timestamp.
| [out] | images | the captured images. |
| [out] | poses | the associated poses. |
| [out] | timestamp | the timestamp. |


Phone<PHONE_NUMBER>
Email<EMAIL_ADDRESS>CONTACT
CONTACT US
This template is designed with a unique and simple, so that it can promote and laundry business solution.
ADDRESS 1
180 Sukarajin Street, Pekanbaru
40021 RIau.
Indonesia.
Phone : +62 7144 3311
ADDRESS 2
45 Embunpagi Street, Pekanbaru
40221 Riau.
Indonesia.
Phone : +62 7144 3300
OPENING HOURS
Monday - Friday : 09:00 - 20:00 pm
Saturday : 09:00 - 17:00
ABOUT US
We provides premium washing and dry cleaning service leveraging mobile based technology. our aims at providing high quality laundry services coupled with customized experience and express delivery.
CONNECT WITH US
OPERATIONAL TIMINGS
GET IN TOUCH
Phone :<PHONE_NUMBER>
Email<EMAIL_ADDRESS>Website : www.xyz.com
Address : 88/1,Patel nagar
Kanpur
208007 U.P.
©2015 XYZ. All Rights Reserved


---
layout: page
title: Fast Unit Tests
date: 2013-02-13 13:04:45.000000000 +01:00
categories: []
tags: []
status: draft
type: page
published: false
meta:
_edit_last: '45897461'
_sd_is_markdown: '1'
_wp_page_template: page-fullwidth.php
original_post_id: '136'
_wp_old_slug: '136'
author:
login: breitzammer
email<EMAIL_ADDRESS>display_name: breitzammer
first_name: ''
last_name: ''
---
This training can be arranged as a 1-day or 2-day course. It will teach you basics of unit testing as well as advanced topics, so you get the most out of this very important technique which seems easy on the outside but can be hard to do well and integrate into your daily programming workflow.
The course is extremely hands-on and will get you out of your comfort-zone quickly.
Already sold? Then schedule a session now.

- Your unit tests are somehow too complicated and you think there must be a better way.
- You sometimes fix bugs more than once.
- You heard that everybody should write tests for their code, but haven't really come around to trying it for yourself.
What you'll learn
- How to write small and fast unit tests.
- How to make writing unit tests a habit.
- You'll learn to fix bugs while driving down costs for adding new features.
- Keep your unit test suite fast and manageable even in large systems.
What you'll do
- You'll work in your preferred programming language and environment. Examples will be in Java only, but easy to understand whatever your preferred environment is.
- This course is very hands-on and you'll be programming most of the time, practicing the necessary techniques.
Topics
- Basics of Unit testing
- State-verification with the help of Stubs
- Behaviour-verification with the help of Mocks
- Parametrized tests
- Refactoring your Tests
What you need to bring with you
- Basic knowledge of an xUnit framework, which you'll have if you've wrote simple tests already
- A laptop with a development environment installed that you want to work with during the course, such as Eclipse, IntelliJ, Visual Studio or even vim
Schedule a Course
If you and/or your team would like specific topics covered, this can be easily arranged. Just tell me.
Schedule a session now to kickstart your new skills.


Sharad Pawar visits Karad, pays tributes to Maharashtra's 1st chief minister
Pawar arrived at 'Pritisangam', Chavan's memorial at Karad in neighbouring Satara district, early in the morning and offered floral tributes.
by PTINCP chief Sharad Pawar visited Karad in Maharashtra on Monday to pay tributes to the state's first chief minister Yashwantrao Chavan on his death anniversary.
Pawar arrived at 'Pritisangam', Chavan's memorial at Karad in neighbouring Satara district, early in the morning and offered floral tributes.
He was accompanied by Srinivas Patil, the NCP's Lok Sabha member from Satara.
Follow our LIVE blog for the latest updates on Maharashtra government formation
Pawar also attended a 'bhajan' ceremony organised as a mark of respect to the late Congress stalwart.
The NCP chief is expected to attend a couple of other events also in Karad during the day.
Notably, NCP leader Ajit Pawar, who is currently in the spotlight after rebelling against his party and supporting the BJP to form government in Maharashtra, sat on a day-long fast at Chavan's memorial in April 2013 for some of his remarks on the then drought situation in the state.


Our Company
Locations
Contact
Graphic design
We deliver eye-catching branding materials that are tailored to meet your business objectives.
Tim Brown
A book cover designed for Tim Brown’s new release, ‘Change’
Boxed water
A simple packaging concept made for Boxed Water
Science!
A poster made in collaboration with the Federal Art Project
App Design
View Projects
Web Design
View Projects
Let’s talk about your project
Ready to take it to the next level? Contact us today and find out how our expertise can
help your business grow.
Get in touch
Our company
Locations
Contact
Designo Central Office
3886 Wellington Street
Toronto, Ontario M9C 3J5
Contact Us (Central Office)
P : +1<PHONE_NUMBER>
M : contact@designo.co


Domonic:¶
Generate HTML with Python 3¶
Domonic Not only a Python library for generating HTML
Domonic contains several evolving packages:
html : Generate html with python 3 😎
dom : DOM API in python 3 😲
javascript : js API in python 3 😳
terminal || cmd : call terminal commands with python3 😱 (see at the end)
JSON : utils for loading / decorating / transformin
SVG : Generate svg using python
aframe || x3d tags : auto generate 3d worlds with aframe. (see examples folder
dQuery - Utils for querying domonic. (alt + 0 for the º symbol)
geom - vec2, vec3 with _dunders_ as well as shape classes
Take a look at the source code and contribute!
HTML TEMPLATING¶
from domonic.html import *
mydom = html(body(h1('Hello, World!')))
print(f"{mydom}")
<!DOCTYPE html>

Hello, World!

To pretty print use an f-string. Which also adds the doctype.
install¶
python3 -m pip install domonic
or if you had it before upgrade:
python3 -m pip install domonic --upgrade
The User Guide¶
Here you can find some instructions for getting the most out of Domonic.
- html
- dom
- javascript
- events
- sitemap
- dQuery
- d3
- JSON
- constants
- terminal
- cmd
- tween
- geom
- x3d
- CDN
- decorators
- Templates and Components
- utils
- webapi
- styles
- 🚀 servers
- Running a python server to view static pages
- Serving dynamic content
- Using domonic with Cherrypy
- Using domonic with Pyramid
- Using domonic with Bottle
- Using domonic with Sanic
- Using domonic with Flask
- Using domonic with FastAPI
- Using domonic with Werkzeug
- Using domonic with Starlette
- Using domonic with Tornado
- Using domonic with Django
- Using domonic with aiohttp
- SPA’s
- Using domonic with AWS lambda
- Using domonic with Google Cloud Functions
- 🤖 autodocs
- Contribute
CLI¶
There’s a few args you can pass to domonic on the command line to help you out.
To launch the docs for a quick reference to the APIs use:
python3 -m domonic -h
This command will attempt to generate a template from a webpage. (only simple pages for now)
python3 -m domonic -d http://eventual.technology
Then you can edit/tweak it to get what you need and build new components quicker.
INSTALLING - (linux/mac only)
If you like you can install domonic to your .bashprofile
python3 -m domonic --install
Now in your terminal whenever you want to start a new project you can type…
project mycoolproject
and it will smash out a basic project for you.
you can also now access the docs quickly simply by typing…
domonic -h
Finally, you can open and edit .bashprofile to tweak it to your own preferences.
Join-In¶
Feel free to join in if you find it useful.
If there’s any methods you want that are missing or not complete yet. Just update the code and send a pull request.
I’ll merge and releaese asap.
EXAMPLE PROJECT¶
A browser based file browser. Working example of how components can work: https://github.com/byteface/Blueberry/
A cron viewer: https://github.com/byteface/ezcron/
Disclaimer¶
There’s several more widely supported libraries doing HTML generation, DOM reading/manipulation, terminal wrappers etc. Maybe use one of those for production due to strictness and support.
This is becoming more of a fast prototyping library.


| I l@ve RuBoard |
8.9 The PyDemos and PyGadgets LaunchersTo close out this chapter, I want to show the implementations of the two GUIs used to run major book examples. The following GUIs, PyDemos and PyGadgets, are simply GUIs for launching other GUI programs. In fact, we've now come to the end of the demo launcher story: both of the programs here interact with modules that we met earlier in Chapter 8 and Chapter 3:
See Examples Example 3-24, Example 4-14, and Example 4-15 for the code for these modules. The programs listed here add the GUI components to the program launching system -- they simply provide easy-to-use pushbuttons that spawn most of the larger examples in this text when pressed. Both these scripts also assume that they will be run with the current working directory set to their directory (they hardcode paths to other programs relative to that). Either click on their names in a file explorer, or run them from a command-line shell after a cd to the top-level PP2E examples root directory. These scripts could allow invocations from other directories by prepending the PP2EHOME environment variable's value to program script paths, but they were really only designed to be run out of the PP2E root. 8.9.1 PyDemos Launcher BarThe PyDemos script constructs a bar of buttons that run programs in demonstration mode, not for day-to-day use. I use PyDemos to show off Python programs whenever I can -- it's much easier to press its buttons than to run command lines or fish through a file explorer GUI to find scripts. You should use PyDemos to start and interact with examples presented in this book -- all of the buttons on this GUI represent examples we will meet in later chapters. To make this launcher bar even easier to run, drag it out to your desktop to generate a clickable Windows shortcut (do something similar on other systems). Since this script hardcodes command lines for running programs elsewhere in the examples tree, it is also useful as an index to major book examples. Figure 8-39 shows what PyDemos looks like when run on Windows; it looks slightly different but works the same on Linux. Figure 8-39. PyDemos with its pop-upsThe source code that constructs this scene is listed in Example 8-32. PyDemos doesn't present much new in terms of GUI interface programming; its demoButton function simply attaches a new button to the main window, spring-loaded to spawn a Python program when pressed. To start programs, PyDemos calls an instance of the launchmodes.PortableLauncher object we met at the end of Chapter 3 -- its role as a Tkinter callback handler here is why a call operation is used to kick off the launched program. As pictured in Figure 8-39, PyDemos also constructs two pop-up windows when buttons at the bottom of the main window are pressed -- an Info pop-up giving a short description of the last demo spawned, and a Links pop-up containing radiobuttons that open a local web browser on book-related sites when pressed:
PyDemos runs on Windows and Linux, but that's largely due to the inherent portability of both Python and Tkinter. For more details, consult the source, which is shown in Example 8-32. Example 8-32. PP2E\PyDemos.pyw############################################################################## # PyDemos.pyw # Programming Python, 2nd Edition (PP2E), 1999--2001 # # Launch major Python+Tk GUI examples from the book, in a # platform-neutral way. This file also serves as an index # to major program examples, though many book examples aren't # GUI-based, and so aren't listed here (e.g., see the Linux # gcc build scripts in the examples root directory for C # integration program pointers). Also see: # # - PyGadgets.py, a simpler script for starting programs in # non-demo mode that you wish to use on a regular basis # - PyGadgets_bar.pyw, which creates a button bar for starting # all PyGadgets programs on demand, not all at once # - Launcher.py for starting programs without environment # settings--finds Python, sets PYTHONPATH, etc. # - Launch_*.py for starting PyDemos and PyGadgets with # Launcher.py--run these for a quick look # - LaunchBrowser.py for running example web pages with an # automatically-located web browser # - README-PP2E.txt, for general examples information # # Internet-based demos live here: # http://starship.python.net/~lutz/PyInternetDemos.html # but this program tries to start a browser on the main web pages # automatically, either on the site above or on local page files. # Additional program comments were moved to file PyDemos.doc.txt ############################################################################## import sys, time, os, launchmodes from Tkinter import * # -live loads root pages off net, -file loads local files InternetMode = '-file' ################################## # start building main gui windows ################################## Root = Tk() Root.title('PP2E Demos') # build message window Stat = Toplevel() Stat.protocol('WM_DELETE_WINDOW', lambda:0) # ignore wm delete Stat.title('PP2E demo info') Info = Label(Stat, text = 'Select demo', font=('courier', 20, 'italic'), padx=12, pady=12, bg='lightblue') Info.pack(expand=YES, fill=BOTH) ############################################# # add launcher buttons with callback objects ############################################# # demo launcher class class Launcher(launchmodes.PortableLauncher): # use wrapped launcher class def announce(self, text): # customize to set GUI label Info.config(text=text) def demoButton(name, what, where): b = Button(Root, bg='navy', fg='white', relief=RIDGE, border=4) b.config(text=name, command=Launcher(what, where)) b.pack(side=TOP, expand=YES, fill=BOTH) demoButton('PyEdit', 'Text file editor', # edit myself 'Gui/TextEditor/textEditor.pyw PyDemos.pyw') # assume in cwd demoButton('PyView', 'Image slideshow, plus note editor', 'Gui/SlideShow/slideShowPlus.py Gui/gifs') demoButton('PyDraw', 'Draw and move graphics objects', 'Gui/MovingPics/movingpics.py Gui/gifs') demoButton('PyTree', 'Tree data structure viewer', 'Dstruct/TreeView/treeview.py') demoButton('PyClock', 'Analog/digital clocks', 'Gui/Clock/clockStyles.py Gui/gifs') demoButton('PyToe', 'Tic-tac-toe game (AI)', 'Ai/TicTacToe/tictactoe.py') demoButton('PyForm', # view in-memory dict 'Persistent table viewer/editor', # or cwd shelve of class #'Dbase/TableBrowser/formgui.py') # 0=do not reinit shelve #'Dbase/TableBrowser/formtable.py shelve 0 pyformData-1.5.2') 'Dbase/TableBrowser/formtable.py shelve 1 pyformData') demoButton('PyCalc', 'Calculator, plus extensions', 'Lang/Calculator/calculator_plusplus.py') demoButton('PyMail', 'Python+Tk pop/smtp email client', 'Internet/Email/PyMailGui.py') demoButton('PyFtp', 'Python+Tk ftp clients', 'Internet/Ftp/PyFtpGui.pyw') if InternetMode == '-file': pagepath = os.getcwd() + '/Internet/Cgi-Web' demoButton('PyErrata', 'Internet-based errata report system', 'LaunchBrowser.py -file %s/PyErrata/pyerrata.html' % pagepath) demoButton('PyMailCgi', 'Browser-based pop/smtp email interface', 'LaunchBrowser.py -file %s/PyMailCgi/pymailcgi.html' % pagepath) demoButton('PyInternet', 'Internet-based demo launcher page', 'LaunchBrowser.py -file %s/PyInternetDemos.html' % pagepath) else: site = 'starship.python.net/~lutz' demoButton('PyErrata', 'Internet-based errata report system', 'LaunchBrowser.py -live PyErrata/pyerrata.html ' + site) demoButton('PyMailCgi', 'Browser-based pop/smtp email interface', 'LaunchBrowser.py -live PyMailCgi/pymailcgi.html ' + site) demoButton('PyInternet', 'Main Internet demos launcher page', 'LaunchBrowser.py -live PyInternetDemos.html ' + site) #To try: bind mouse entry events to change info text when over a button #See also: site http://starship.python.net/~lutz/PyInternetDemos.html ############################################# # toggle info message box font once a second ############################################# def refreshMe(info, ncall): slant = ['normal', 'italic', 'bold', 'bold italic'][ncall % 4] info.config(font=('courier', 20, slant)) Root.after(1000, (lambda info=info, ncall=ncall: refreshMe(info, ncall+1)) ) ######################################## # unhide/hide status box on info clicks ######################################## Stat.iconify() def onInfo(): if Stat.state() == 'iconic': Stat.deiconify() else: Stat.iconify() # was 'normal' ############################################ # popup a few web link buttons if connected ############################################ radiovar = StringVar() # use a global def onLinks(): popup = Toplevel() popup.title('PP2E web site links') links = [("Book", 'LaunchBrowser.py -live about-pp.html rmi.net/~lutz'), ("Python", 'LaunchBrowser.py -live index.html www.python.org'), ("O'Reilly", 'LaunchBrowser.py -live index.html www.oreilly.com'), ("Author", 'LaunchBrowser.py -live index.html rmi.net/~lutz')] for (name, command) in links: callback = Launcher((name + "'s web site"), command) link = Radiobutton(popup, text=name, command=callback) link.config(relief=GROOVE, variable=radiovar, value=name) link.pack(side=LEFT, expand=YES, fill=BOTH) Button(popup, text='Quit', command=popup.destroy).pack(expand=YES,fill=BOTH) if InternetMode != '-live': from tkMessageBox import showwarning showwarning('PP2E Demos', 'Web links require an Internet connection') ############################################# # finish building main gui, start event loop ############################################# Button(Root, text='Info', command=onInfo).pack(side=TOP, fill=X) Button(Root, text='Links', command=onLinks).pack(side=TOP, fill=X) Button(Root, text='Quit', command=Root.quit).pack(side=BOTTOM, fill=X) refreshMe(Info, 0) # start toggling Root.mainloop() 8.9.2 PyGadgets Launcher BarThe PyGadgets script runs some of the same programs as PyDemos, but for real, practical use, not as flashy demonstrations. Both scripts use launchmodes to spawn other programs and display bars of launcher buttons, but this one is a bit simpler because its task is more focused. PyGadgets also supports two spawning modes: it can either start a canned list of programs immediately and all at once, or display a GUI for running each program on demand (Figure 8-40 shows the launch bar GUI made in on-demand mode). Because of such differences, PyGadgets takes a more data-driven approach to building the GUI: it stores program names in a list and steps through it as needed, rather than using a sequence of precoded demoButton calls. The set of buttons on the launcher bar GUI in Figure 8-40, for example, depends entirely upon the contents of the programs list. Figure 8-40. PyGadgets launcher barThe source code behind this GUI is listed in Example 8-33; it's not much, because it relies on other modules (launchmodes, LaunchBrowser) to work most of its magic. PyGadgets is always open on my machines (I have a clickable shortcut to this script on my Windows desktop too). I use it to gain easy access to Python tools that I use on a daily basis -- text editors, calculators, and so on -- all of which we'll meet in upcoming chapters. To customize PyGadgets for your own use, simply import and call its functions with program command-line lists of your own, or change the mytools list of spawnable programs near the end of this file. This is Python, after all. Example 8-33. PP2E\PyGadgets.py#!/bin/env python #################################################################### # Start various examples; run me at system boot time to make them # always available. This file is meant for starting programs you # actually wish to use; see PyDemos for starting Python/Tk demos # and more details on program start options. Windows usage note: # this is a '.py' file, so you get a dos box console window when it # is clicked; the dos box is used to show a startup message (and we # sleep 5 seconds to make sure it's visible while gadgets start up). # If you don't want the dos popup, run with the 'pythonw' program # (not 'python'), use a '.pyw' suffix, mark with a 'run minimized' # Windows property, or spawn the file from elsewhere; see PyDemos. #################################################################### import sys, time, os, time from Tkinter import * from launchmodes import PortableLauncher # reuse program start class def runImmediate(mytools): # launch gadget programs immediately print 'Starting Python/Tk gadgets...' # msgs to temp stdout screen for (name, commandLine) in mytools: PortableLauncher(name, commandLine)() # call now to start now print 'One moment please...' # \b means a backspace if sys.platform[:3] == 'win': # on Windows keep stdio console window up for 5 seconds for i in range(5): time.sleep(1); print ('\b' + '.'*10), def runLauncher(mytools): # put up a simple launcher bar for later use root = Tk() root.title('PyGadgets PP2E') for (name, commandLine) in mytools: b = Button(root, text=name, fg='black', bg='beige', border=2, command=PortableLauncher(name, commandLine)) b.pack(side=LEFT, expand=YES, fill=BOTH) root.mainloop() mytools = [ ('PyEdit', 'Gui/TextEditor/textEditor.pyw'), ('PyView', 'Gui/SlideShow/slideShowPlus.py Gui/gifs'), ('PyCalc', 'Lang/Calculator/calculator.py'), ('PyMail', 'Internet/Email/PyMailGui.py'), ('PyClock', 'Gui/Clock/clock.py -size 175 -bg white' ' -picture Gui/gifs/pythonPowered.gif'), ('PyToe', 'Ai/TicTacToe/tictactoe.py' ' -mode Minimax -fg white -bg navy'), ('PyNet', 'LaunchBrowser.py -file ' + os.getcwd() + '/Internet/Cgi-Web/PyInternetDemos.html') ] if __name__ == '__main__': prestart, toolbar = 1, 0 if prestart: runImmediate(mytools) if toolbar: runLauncher(mytools) By default, PyGadgets starts programs immediately when it is run. To run PyGadgets in launcher-bar mode instead, Example 8-34 simply imports and calls the appropriate function with an imported program list. Because it is a .pyw file, you only see the launcher bar GUI it constructs initially, not a DOS console streams window. Example 8-34. PP2E\PyGadgets_bar.pyw# run PyGadgets tool bar only, instead of starting all the # gadgets immediately; filename avoids dos popup on windows import PyGadgets PyGadgets.runLauncher(PyGadgets.mytools) This script is the file my desktop shortcut invokes; I prefer to run gadget GUIs on demand. You can also run a script like this at your system's startup to make it always available (and save a mouseclick). For instance:
Whether run via a shortcut, file explorer click, typed command line, or other means, the PyGadgets launcher bar at the top of Figure 8-41 appears. Figure 8-41. PyGadgets launcher barOf course, the whole point of PyGadgets is to spawn other programs. Pressing on its launcher bar's buttons starts programs like those shown in the rest of Figure 8-41, but if you want to know more about those, you'll have to turn the page and move on to the next chapter. |
| I l@ve RuBoard |


I've learnt that when faced with a challenge I need to actively remind myself to be resilient. I've come to find that I work best when instructions and variables are defined from the beginning of a task and that regular meditation and reflection are the basis for a healthy work / life balance.
Values, empathy and self awareness play a huge role in learning and programming. I think that a lot of the internets problems are caused by not leading development with these traits.
Being exposed to, and adopting Carol Dweck's 'Power of Yet' philosophy was a turning point for me. It's something that I remind myself constantly, especially if when I am struggling with a problem.
I found the 'flipped learning' experience challenging because it's a totally new way of thinking. Ultimately I think it is the reason why I've been able to retain so much new information.
I think EDA has a strong focus on core learning for multiple reasons. It preps students for days of problem solving based work, and helps them stay motivated through the accelerated learning environment.
Not at all. Knowing your personality, and how it works (especially within groups environments) can only benefit a student in the long run.
The long term goal is to find employment once I leave Dev Academy, so I can provide for myself, my partner and my family. I'd seek an opportunity to become a better coder by getting into situations where I can put in the hours needed to upskill. Ideally I'd like to work in sectors that deal in Music, Environmentalism, Education or the Union movement.
I think that my evaluations of my strengths and limitations from Sprint 2 were accurate. I do work best when I adhere to a routine and I can minimise distraction. I've also discovered that I enjoy being in collaborative environment, and have struggled with the isolation of Foundations. I look forward to Bootcamp and re-arranging my routine to accommodate my new surroundings.
I think maintaining resilience in difficult learning environments and keeping focused will be my biggest non-technical challenges in Bootcamp.
I'd like to develop my communication and self awareness skills. I think that will aid me best for when I pair with others or work in groups.
I commit to being present throughout Bootcamp, taking time to asses the workload and to change my routine accordingly. I will move into all situations with an open mind and empathy.


Asset Browser
Repository - Submissions
JSON view
Workspace
Commit to Repo
Save to Workspace
JSON view
JSON format of DATA


Getting Started
sassdocJs is a nodejs
command-line (CLI) app that will parse jsDoc style comments*
found in your .scss
source files, and use them to create a structured set of Html-based documentation. It's
aim is to provide an easy way to catalog your growing library of sass mixins, functions, placeholders, etc,
while complimenting whatever workflow, or Sass/Css/OOCSS standardization you may have adopted.
By default, sassdocJs will group your documentation by kind (mixin, var, etc.), name, and file. It's also possible to group by
useage location (header, navbar, etc.), and by OOCSS-style naming conventions (m-odule, l-ayout, etc.) as used in
BEM, SMACSS and the like.
I've tried to keep things extensible: there's a default set of 'language definitions', such as @mixin
, %placeholder
,
or #id
, but it's simple to construct custom definitions. A theme-able Html/Handlebars.js template is included.
Finally, the parsed documentation result is saved as plain JSON, so you can easily work it into whatever front-end you fancy.
* currently not //
comments - see here
Installation
sassdocJs is built with nodeJs & can be installed via npm or download the source.
with npm
npm install -g sassdocjs
Clone or fork on GitHub
git clone git://github.com/mattbieber/sassdocjs.git
Usage
To use sassdocJs, open up a shell and run the following command. There's a number of command line options available, see below.
sassdocjs [path] [options]
With no arguments , sassdocJs will recursively search the current directory for Sass source files,
and output generated documentation to ./doc
Options
There's a fair amount of configuration switches, see below on how to supply them via a config file.
| Option | Description |
|---|---|
| -n, –name | name of the project |
| -u, –logo | logo file url to appear in documentation header |
| -d, –description | project description |
| -v, –version | version of the documentation |
| -a, –auth | project author(s) |
| -b, –contrib | project contributors |
| -s, –status | project status |
| -x, –exclude | file pattern for exclusion |
| -i, –include | file pattern for inclusion |
| -o, –out | path to write generated docs to |
| -t, –template | path to output template directory |
| -r, –recurse | recurse working directory for sass sources |
| -p, –prefix | categorize by prefix (e.g. m- = module) |
| -c, –config | save .yml config file in working directorytrue |
| -l, –log | toggle logging |
| -y, –verbose | logging verbosity |
| -m, –limit | set the allowed file parsing concurrencey |
| -h, –help | show sassdocjs usage options |
Options config file
You can simplify configuration by putting a YAML config file -
config.yml
- at the root of your projects’ source folder. See the one included in the example for file’s
layout, or run sassdocjs --config
and fill out the created file.
Language Definitions
When parsing comments, sassdocJs pulls out comments using 'definitions' found in lib/lang/defs
.
Definitions can be supplied for both in-comment tags, or for a keyword prefix character,
as in #
and %
, for Css Ids and Sass placeholders. The following are provided:
-
$
Sass variable -
%
Sass placeholder -
.
Css class -
#
Css Id -
@
Sass mixin/function -
@module
Define a file as a module -
@param
Sass mixin/function argument -
@returns
Sass mixin/function return value -
@example
Code example -
@usedin
Location(s) the documented item can be found
It’s fairly trivial to supply your own documentation tag definitions should you wish. Any
def_*.js
file found by the parser will be included as a definition and have it's rules applied during validation. Definition
files should implement lib/lang/defs/_def.js
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
/** * language definition file for a Sass mixin * http://sass-lang.com/documentation/file.SASS_REFERENCE.html#mixins * * @module lib/lang/defs/def_mixin */ var _sd = require('../../env/const'), definitionBase = require('./_def').definitionBase; /** * @constuctor */ function _lang_def() { /* implement base */ definitionBase.call(this, { type_def: 'mixin', value: 64, //@ name_position: 2, context: _sd.CONTEXT.FIRST_CLASS, canHaveValue: _sd.VALIDATION.REQUIRED, canHaveDescription: _sd.VALIDATION.OPTIONAL, canHaveMeta: _sd.VALIDATION.OPTIONAL }); /* definitions must implement validate */ this.validate = function() { }; /** exports */ module.exports = new _lang_def(); |
OOCSS Naming Conventions
With the --prefix
option, sassdocJs will parse and group your files according to word prefix entries placed in lib/lang/prefix.js
.
I've included SMACSS-ish entries, but anything can be supplied.
1 2 3 4 5 6 7 8 9 |
module.exports = { // smacss 'm-' : 'module', 'l-' : 'layout', 's-' : 'state', 'is-' : 'state' }; |
The prefixed grouping is called 'category' in the docs
More info
A few resources regarding OOCSS-style naming:
SMACSS.com
Taking Sass to the Next Level with SMURF and @extend
Fifty Shades of BEM
Use Location
You can provide an @usedin
entry in your comment block with a comma-separated value of locations (e.g. header, shopping cart, home page).
sassdocJs will include that as a grouping option in the generated docs.
The use location grouping is called 'used' in the docs
Template
The included Handlebars template is pretty straight-forward. It uses the generated sassdoc-data.js
as it's data
source. I've included some rudimentary themeing ability which you can find in the ./Sass
directory. See one of
the existing theme files for reference.
If you do customize, you'll want to run $grunt build
in the template directory to compile the Sass and move it to the build folder.
Test
You can run the included test with make or grunt:
$make / $grunt test
Additional fixtures can be put in parse.spec.js
Examples
For eample useage, please see the commented Sass source and Yaml config file in ./example
.
Known Issues
*I went with jsDoc-style comments for the simple reason that I prefer them to the Sass //
variety.
The (obvious) drawback is that the Sass compiler won't strip these out upon compilation. I've got some ideas in mind
for this on the roadmap, but please contribute if you wish. I also decided to eschew support for the older
syntax style (.sass). Feel free to fork the repo and add it.
This is 0.0.1 code so please get in touch with any issues you encounter.
Roadmap
Following is what's planned.
- Add support for standard Sass
//
comment blocks. - Ability to strip sassdocJs comment blocks
//* */
on save so they don't end up in the pre-compiled Sass files. - Move name prefixing setting to config file.


Creates a responsive horizontal bar chart using HTML5, jQuery & CSS
Even works in IE6!!
Include jQuery and required files

The plugin uses the data-number
attribute for the graph length.
jQuery will then cycle through all the selector
's and find the one with the highest number.
That number will be used as 100% base point and make the rest of the bars relative to that number.

38,000

134,000

Simplest way to use is create the following markup and just call .horizBarChart()
on your containing element.
$('.chart').horizBarChart();
The following are the available options and default values.
$('.chart').horizBarChart({
selector: '.bar',
speed: 3000
});


Maintenance Tracker
My Account
Home
Logout
Create Request
Create Request
Request Title:
Location:
Priority:
High
Medium
Low
Request Description:


Created for
Created by
create_user()
function:
def create_user(request):
user = User.objects.create_user('ada'<EMAIL_ADDRESS>'adapass')
# we can add/change other properties if we want later
user.save();
return HttpResponse('user created')
createsuperuser
command:
$ python manage.py createsuperuser
manage.py changepassword username
set_password()
function:
user = User.objects.get(username='ada')
user.set_password('adanewpass')
user.save()
authenticate(**credentials)
from django.contrib.auth import authenticate
user = authenticate(username='ada', password='addnewpass')
if user is not None:
# the password verified for the user
if user.is_active:
return HttpResponse('User is authenticated')
else:
return HttpResponse('account is disabled, the user is valid')
else:
# the authentication system was unable to verify the username and password
return HttpResponse('The username and/or password were incorrect.')
request.user
attribute on every request which represents the current useris_authenticated()
:
if request.user.is_authenticated():
# Do something for authenticated users.
else:
# Do something for anonymous users.
from django.contrib.auth import authenticate, login
def login_view(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
# Redirect to a success login page.
else:
# Return a 'disabled account' error message
else:
# Return an 'invalid login' error message.
from django.contrib.auth import logout
def logout_view(request):
logout(request)
# Redirect to a success logout page.
login_required
decoratordjango.contrib.auth.decorators.login_required
from django.contrib.auth.decorators import login_required
@login_required
def restricted_view(request):
pass
These slides are based on
customised version of
framework


The setup.
Include jquery.skippr.css inside your head tag and jquery.skippr.js just before the closing body tag.
Be sure to include jQuery before jquery.skippr.js

<title>Your Awesome Website</title>
<link rel="stylesheet" href="css/jquery.skippr.css">

Create a target element with divs inside, one for each slide, and add a background image with css or the style attribute. Skippr targets div tags inside of the selected element with background-images applied to them. Put this target element inside of a container element styled and positioned to your liking. The target element will completely fill it's parent container element.
**Note: The container element must have a specified width and height, and position other than static to work properly.

Initiate.
Just select the target element with jQuery and call the skippr method. Thats it!
$(document).ready(function(){
$("#theTarget").skippr();
});
Options.
Pass in an options object as a parameter to the skippr method for customization.
// Defaults
$("#theTarget").skippr({
transition: 'slide',
speed: 1000,
easing: 'easeOutQuart',
navType: 'block',
childrenElementType: 'div',
arrows: true,
autoPlay: false,
autoPlayDuration: 5000,
keyboardOnAlways: true,
hidePrevious: false
});
Skippr will be an ongoing project. Check back or star on Github for updates =]


{% extends "base.html" %}
{%block content%}
Out team is built from a wide variety of backgrounds from all over the world. What we have in common is our passion to get a quality education to everyone. We’ve built our platform with our own digital learning experiences in mind to provide a fun and easy experience for students and their parents.
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia.
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia, there live the blind texts.
Far far away, behind the word mountains, far from the countries Vokalia and Consonantia.
Dignissimos asperiores vitae velit veniam totam fuga molestias accusamus alias autem provident. Odit ab aliquam dolor eius.
We have sourced some of the best teachers from around the country to deliver content in their proven methodologies.
With our interactive tools, children can learn and play together and easily communicate to help each other and build friendships with their peers.
All of our courses are in-line with official curriculum and prepare students for high performance in standardized tests.
Meet some of our world class teachers...
Mr. Brandon has spent eight years teaching classes between K-6. He is super excited to experiment with technology in his teaching role at LearnIn. He is committed to providing your family with a loving and developmentally sound foundation for a lifetime of learning. He believes that play is a child's most important work he strives to create and maintain an online experience where your child can grow and thrive.
Mr. Mauro has been teaching for 10 years. He grew up in Houston, Texas, and attended college at Rice University, where he studied Family and Child Development. When he’s not teaching, he is at home with his three awesome kids: Lily, Tristan, and Eli! All three of his kids are enrolled in LearnIn so he has the opportunity to create great memories of our school while sharing them with students around the country.
Dignissimos asperiores vitae velit veniam totam fuga molestias accusamus alias autem provident. Odit ab aliquam dolor eius molestias accusamus alias autem provident. Odit ab aliquam dolor eius.
Ms. Ladi always wanted to be a teacher and has been fortunate and blessed enough to have been teaching since she graduated university. Her dream is to run an amazing school that has a nurturing, loving environment where children can learn and experience new challenges that will help build their confidence while they play and learn. She takes that spirit to the classes at LearnIn and she looks forward to having a positive impact on children's growth and to new bring them new discoveries in their education journey.


Description
This "kitchen sink" demo shows an advanced production ready usage of the
AlphaJpg-Canvas.js
library. When Javascript is disabled, a <noscript> tag is used to load a <picture>,
which delivers either a WebP or PNG version of the image. If Javascript is enabled, it determines
whether to deliver a WebP image, an AlphaJpg reconstructed image, or a plain PNG file.
This technique offers broad browser support and allows for one to deliver the smallest image file
possible based on the browser's capabilities.
Support
This technique is supported everywhere.


When the scan finishes it will generate a report. The name that you provide here will be the name of the report with the time stamp appended at the end of the file.
For example: If the report name is named "Sample_test_report", the plugin will name the report generated to "Sample_test_report_[timestamp].xml"


Yahoo!
Yahoo! 1995
Similar to Google, was used and is still being used for searching anything. Although, back
there wasn't a lot you could search for. The reason is because there weren't many website.
There were not many people posting any information. Yahoo! was before Google. Anything you
search today we used to do that on Yahoo!.
This is what Yahoo! looked like.
Again, same like the other websites. A lot of links that made it harder to read because you had everything in the same place It might not look that bad since you had everything in one place you could find stuff easier. However, back in the 90s, websites weren't meant to look great.
Yahoo! 2020
Now Yahoo is well known and competes with Google. Although, Google has taken over the Search Engines platforms. Although, Yahoo has kept their same design aspect by leaving their categories of options in their homepage.
A website that you can find anything and that looks appealing. Compared to Google, Yahoo! kept the newspaper style design. They introduced images and videos in their homepage to get more attention from people visiting. Google kept it simple. However, Yahoo! tends to be better in some other aspects compared to Google and how it used to be. They have created more than just a Search Engine. People can now interact and entertain themselves thru a fantasy sports platform. They can also read and watch videos directly thru Yahoo!. Unlike Google which takes you to another website.


Thre are two possibe approaches to access COM objects: importing type libraries manually or simplified "Single-line COM access" approach. It is recomended to use "Single-line COM access" as it provides seamless access to COM (no manual steps are required). It also allows referencing the COM objects by GUIDS, ProgID or file name (.dll/.ocx) directly from the code.
Note: the location of the generated Runtime Collable Wrapper file depends on the HideAutoGeneratedFiles setting value (see configuration console for details). The location of this file does not affect the script code in any way.
"Single-line COM access"
Download tutorial source code: interop.zip| //css_prescript com(ATLSimpleServ.dll, SimpleServ, /r); using System; using SimpleServ; class Test { public static void Main(string[] args) { CTestObjClass COMObject = new CTestObjClass(); COMObject.Test(); } } |
The script will display "CTestObj::Test" MessageBox.
The
"Single-line COM access" is heavily based on the concept of Pre-
and Post-execution scripts.
In this example the script creates the instance and calls the method Test() of the COM object CTestObj.
At the start of the execution the script engine executes com.cs script specified with the pre-script directive:
| //css_prescript com(ATLSimpleServ.dll, SimpleServ, /r); |
| //css_prescript com(ATLSimpleServ.dll, SimpleServ, /r); //css_postscript com(ATLSimpleServ.dll, /u); |
The com.cs script allows importing the COM servers specified not only by the name of the dll implementing it, but also by GUID or ProgID which can be used to identify the corresponding type library.
This is an example of accessing the COM server SYSINFO.SysInfo.1 in order to retreive battery status (SysInfo.cs):
| //css_prescript com(SYSINFO.SysInfo.1, SisInfoLib); using System; using SisInfoLib; class Script { [STAThread] static public void Main(string[] args) { SysInfoClass sysInfo = new SysInfoClass(); switch (sysInfo.ACStatus) { case 0: Console.WriteLine("Not using AC power"); break; case 1: Console.WriteLine("Using AC power"); break; default: Console.WriteLine("Unknown AC power status"); break; } if (sysInfo.BatteryLifePercent != 255) Console.WriteLine("Battery life "+sysInfo.BatteryLifePercent+"%"); else Console.WriteLine("Battery charge status not known"); } } |
Note that the COM server in this case does not require any registration. This is because it is always present and registered on any Windows with VB controls installed. And this is the reason why you can access it by ProgID (SYSINFO.SysInfo.1 in SysInfo1.cs).
Alternativelly you can specify the COM server by it's GUID (or TypeLibrary GUID):
//css_prescript com({6FBA474B-43AC-11CE-9A0E-00AA0062BB4C}, SisInfoLib);
If you do not have VB controls installed the use of the GUID/ProgID can be illustrated by the msxml.cs sample which utilises MS XML parser COM server (%SystemRoot%\system32\msxml2.dll).
Another example of specifying the COM object by it's ProgID is the setEv.cs script. It illustrates how to use VBScript style programming to permanently set environment variable.
Remember that the pre- and post-execution scripts are not executed when the main script is opened for debugging in the VS2003 (this does not apply for VS2005) .
| using System; using SimpleServ; class Test { public static void Main(string[] args) { CTestObjClass COMObject = new CTestObjClass(); COMObject.Test(); } } |
The script engine dynamically identifies SimpleServ.dll referenced from the code (using SimpleServ;) and loads it at run-time. Alternatively SimpleServ.dll can be loaded with //css_reference directive:
| //css_reference SimpleServ.dll; using System ; class Test ... |
The difference between the "Manual importing" and "Single-line COM access" samples is in the presence of //css_prescript directive. The rest of the code is the same.
Note thet the script engine dynamically identifies SimpleServ.dll referenced from the code and dynamically loads it at the run-time. Alternatively SimpleServ.dll can be loaded with the //css_reference directive:
|
//css_prescript com(ATLSimpleServ.dll, SimpleServ, /r); //css_reference SimpleServ.dll; using System ; class Test { public static void Main(string[] args) { SimpleServ.CTestObjClass COMObject = new SimpleServ.CTestObjClass(); COMObject.Test(); } } |
Extending the scripting system | Pre- and Post-execution scripts


IdeaThon
Workshops & Lectures
Women Safety - Self Defence Training
I_m_Sherlocked
Blind Coder
ChitraKala
Test_Your_Wits
Memedian
SloMo
Fotografie
Dame Tu Cosita
For Description : Download Event Pdf Download Schedule pdf


Hello world! I am a Ph.D. candidate in the Stellar Ages & Galactic Evolution (SAGE) group at the Max Planck Institute for Solar System Research and the Department of Astronomy at Yale University, where I am advised by Saskia Hekker and Sarbani Basu.
My research focuses on measuring fundamental aspects of our universe, such as its age and its size, through the study of variable stars.
My interests include asteroseismology, machine learning, and the history and philosophy of science. I am an advocate for open source and open science.
I enjoy teaching and have had the privilege to assist in teaching courses at SUNY Oswego, Indiana University, and the University of Göttingen. In my free time, I like to compose music and play the guitar and drums.
A collaboration between
(1) the Max Planck Institute for Solar System Research, Göttingen, Germany;
(2) the Department of Astronomy, Yale University, New Haven, CT, USA; and
(3) the Institute of Computer Science, University of Göttingen, Germany
Advised by Dr. ir. Saskia Hekker1, Prof. Dr. Sarbani Basu2, Dir. Prof. Dr. Laurent Gizon1, and
Prof. Dr. Ramin Yahyapour3
Fellow of the National Physical Science Consortium
Thesis Topic: Asteroseismic Inversions of Solar-like Oscillators
Advised by Prof. Dr. Predrag Radivojac and Prof. Dr. Haixu Tang
Fellow of the National Physical Science Consortium
GPA: 3.94/4.0
Advised by Prof. Dr. Shashi Kanbur and Prof. Dr. Steven Reyner
Honors Thesis: Multiphase Relations of Magellanic Cloud Cepheids
GPA: 3.81/4.0 (summa cum laude, Outstanding Computer Science Senior)
Asteroseismic inversions of solar-like stars
Fundamental stellar parameters in an instant with machine learning
HydratiCA Information Discoverer (HIDE), a data mining tool for 3D chemical simulations
Protein inference and quantification from tandem mass spectrometry
Asynchronous updating in elementary cellular automata with stochastic perturbations
CASSIUS, a communication tool for the Cassini mission to Saturn
Dynamics of interacting electrons in disordered systems
Chimera: an automated observatory system
ASTR 550 — Stellar Astrophysics
M.Phy.55x.3C — Numerical Experiments in Stellar Physics
CSCI-C211/A591 — Introduction to Computer Science
HON 150 — Introduction to Honors
R, Python2/3, Bash, LaTeX, HTML
CLISP, Scheme, Java, MATLAB, SQL, CSS
ActionScript, Assembly, BASIC, C, C++, FORTRAN 77/90/95, Haskell, Javascript, Mathematica, ML, Perl, PHP, Prolog, Ruby
English (native), German, Portuguese, Spanish
Resolving combination frequency amplitudes of multi-mode pulsators
Optimal Model Discovery of Periodic Variable Stars
Calibrating the Cepheid Distance Scale
Automated Supervised Classification of Variable Stars
Multiphase Relations of Cepheid Variable Stars in the Magellanic Clouds
Fundamental Parameters of Main-Sequence Stars in an Instant with Machine Learning
GarsGen: An in-situ optimization algorithm for GARSTEC and ADIPLS stellar physics codes
New insights into the Cepheid PL Relation through the use of multiphase relations
Multiphase Comparison of PL and PW Relations for Magellanic Cloud Cepheids
Multiphase Comparison of PL/PC Relations
U.C. Santa Barbara, CA, USA
Horta, Faial, Azores Islands, Portugal
Helped raise over $50,000 for research to find cures for childhood cancers.
Provided care for horses with this IRS approved 501(c)(3) family-run charitable organization.
Band leader and eletric bass player of 12-member ensemble
SUNY Oswego Student/Faculty Collaborative Challenge Grant • 2012
National SMART Grant • 2010, 2011 (awarded twice)
National Academic Competitiveness Grant • 2008 (awarded twice)
National Physical Science Consortium Graduate Fellowship • 2012 — 2017
Robert Brian Ellis Scholarship • 2011
New York State Federation of Home Bureau Scholarship • 2011
National Science Foundation International Research Experience for Undergraduates / SUNY Oswego Global Laboratory Scholarship • 2010, 2011 (awarded twice)
SUNY Oswego Presidential Scholarship • 2008-2012 (awarded four times)
Oebele Van Dyk Outstanding Computer Science Senior Award • 2012
SUNY Chancellor’s Award for Student Excellence • 2012


The Lua plugin for GCC is available from a git repository:
git clone http://git.colberg.org/gcc-lua
In the repository, checkout the latest release version:
git checkout 1.3.0
If you have GnuPG, verify that the tag is signed by the following key:
git tag -v 1.3.0
Primary key fingerprint: 2997 6EC2 2BD1 EBBC CC77 F3A6 183B D5ED 3527 8611
Subkey fingerprint: 983B F9D0 F02A 6014 0CEC 529F 767E 12A8 C92A 31CB
To compile the plugin, run:
make
A distribution may ship the GCC plugin development headers in a separate package. The Debian distribution, for example, provides the package gcc-4.7-plugin-dev for GCC 4.7.
To compile the plugin using a specific version of the GNU compiler, override the make variable CC
:
make CC=gcc-4.8
To compile the plugin for use with a cross compiler of the same version:
make CC=gcc-4.7 CROSS=arm-linux-gnueabihf-
To compile the plugin for use with a cross compiler of a different version:
make HOST_CC=gcc-4.8 TARGET_CC=arm-linux-gnueabihf-gcc-4.7
By default, pkg-config
is used to find the Lua library.
If the Lua library cannot be found, override LUACFLAGS
and LUALIBS
:
make LUACFLAGS="-I/usr/include/lua5.1" LUALIBS="-L/usr/lib -llua5.1"


To stand up and say that 100% of global warming is because of human activity, I think on its face, is just indefensible
- Rick Perry, the US energy secretary
Humanity has arguably caused almost 100% of global warming since 1950. (Hausfather, 2017) As mentioned in Causes, the greenhouse effect is how climate change occurs. Most of the greenhouse gases that appear during the process are man-made. A main reason for this can include the continually rising demand for energy such as electricity. This increased the combustion of fossil fuels and releasing greenhouse gases. In fact the industrial activities caused by humans have raised the levels of carbon dioxide from 280 parts per million to 414 parts per million in the last 150 years.
Graph showing the steady rise of CO2 levels in the atmosphere. Credit: ucsusa.org


A slider is a control that enables the user to adjust single values within a specified numerical range.
If the slider is editable, the hand cursor appears when the user hovers over the grip.
The user can change the slider setting in two ways:
The grip can be moved with or without increments based on the predefined steps.
For range slider set the [range]
property to true.


Game Base by Ivan AB
link here:
You might want to use
http://www.online-image-editor.com/
Click to hide.
out 1
out 2
out 3
At the bottom of every page make sure you include the following button:


Declarable Types
Declarable Types
The Declaration
type is so simple that it barely warrants further comment. In practice it is handy to bundle the exception machinery behind more meaningful types, which we do with the Declarable
class. These are types which can be converted into a Declaration
, letting us selectively hide the machinery of IO and exception throwing.
Let's describe some Declarable
types. First of all, IO
actions themselves are trivially declarable when we throw away the wrapped value:
The unit type is also trivially declarable.
Lists of declarable values are declarable; we check each declaration in order.
Booleans are also declarable in a sensible, albeit not very useful, way:
Tuples are also declarable in a straightforward way. (Note that the order of the tuple values matters -- entries to the left are evaluated (and their effects observed) before those to the right.)
instance
( Declarable a1, Declarable a2
) => Declarable (a1,a2)
where
declare (a1,a2) = sequence_
[ declare a1, declare a2 ]
instance
( Declarable a1, Declarable a2, Declarable a3
) => Declarable (a1,a2,a3)
where
declare (a1,a2,a3) = sequence_
[ declare a1, declare a2, declare a3 ]
instance
( Declarable a1, Declarable a2, Declarable a3, Declarable a4
) => Declarable (a1,a2,a3,a4)
where
declare (a1,a2,a3,a4) = sequence_
[ declare a1, declare a2, declare a3, declare a4 ]
instance
( Declarable a1, Declarable a2, Declarable a3, Declarable a4
, Declarable a5
) => Declarable (a1,a2,a3,a4,a5)
where
declare (a1,a2,a3,a4,a5) = sequence_
[ declare a1, declare a2, declare a3, declare a4
, declare a5 ]
instance
( Declarable a1, Declarable a2, Declarable a3, Declarable a4
, Declarable a5, Declarable a6
) => Declarable (a1,a2,a3,a4,a5,a6)
where
declare (a1,a2,a3,a4,a5,a6) = sequence_
[ declare a1, declare a2, declare a3, declare a4
, declare a5, declare a6 ]
We can define declarable instances for base types all day. But the real power will come from custom types we define for individual use cases.


{% extends "base.html" %} {% block title %}{{ province.name }} Legislature | PMG{% endblock %} {% block breadcrumb %}
{% endblock %} {% block page %}This is content of a provincial legislature we've recently added - although no meeting reports.
Help keep this updated by sending changes to us!
Submit a change


HTTP response freshness testing
This is a Node.js module available through the
npm registry. Installation is done using the
npm install
command:
$ npm install fresh
var fresh = require('fresh')
Check freshness of the response using request and response headers.
When the response is still "fresh" in the client's cache true
is
returned, otherwise false
is returned to indicate that the client
cache is now stale and the full response should be sent.
When a client sends the Cache-Control: no-cache
request header to
indicate an end-to-end reload request, this module will return false
to make handling these requests transparent.
This module is designed to only follow the HTTP specifications, not to work-around all kinda of client bugs (especially since this module typically does not recieve enough information to understand what the client actually is).
There is a known issue that in certain versions of Safari, Safari will incorrectly make a request that allows this module to validate freshness of the resource even when Safari does not have a representation of the resource in the cache. The module jumanji can be used in an Express application to work-around this issue and also provides links to further reading on this Safari bug.
var reqHeaders = { 'if-none-match': '"foo"' }
var resHeaders = { 'etag': '"bar"' }
fresh(reqHeaders, resHeaders)
// => false
var reqHeaders = { 'if-none-match': '"foo"' }
var resHeaders = { 'etag': '"foo"' }
fresh(reqHeaders, resHeaders)
// => true
var fresh = require('fresh')
var http = require('http')
var server = http.createServer(function (req, res) {
// perform server logic
// ... including adding ETag / Last-Modified response headers
if (isFresh(req, res)) {
// client has a fresh copy of resource
res.statusCode = 304
res.end()
return
}
// send the resource
res.statusCode = 200
res.end('hello, world!')
})
function isFresh (req, res) {
return fresh(req.headers, {
'etag': res.getHeader('ETag'),
'last-modified': res.getHeader('Last-Modified')
})
}
server.listen(3000)


Security Vulnerabilities
Cross-Site Request Forgery (CSRF) - Bank Transfer
Cross-Origin Resource Sharing (CORS) - Bank Transfer
Broken Object-Level Authorization - Sales
Broken Object-Level Authorization - Appointments
Broken Authentication - Reset Password
Data Exposure
Rate/Volume Limiting
SQL Injection
JPQL Injection
Upload
Server-Side Request Forgery
Mass Assignment


Welcome to the ENIGMA TOOLBOX 👋🏼¶
Data sharing 💌¶
As part of the ENIGMA TOOLBOX, we are making several data matrices openly available! As of now, these include functional and structural connectivity data as well as transcriptomic data.
Harmonization of analytical methods 👯♀¶
One key goal of the ENIGMA TOOLBOX is to harmonize analytical methods both within and across ENIGMA Working Groups, ultimately facilitating comparisons of imaging and genetic findings across diseases.
Visualization tools 🎨¶
Tired of displaying your surface findings in tables? Look no further! The ENIGMA TOOLBOX has got you covered! Check out our visualization tools and project your cortical and subcortical data to the surface!
Step-by-step tutorials 👣¶
The ENIGMA TOOLBOX has a No data, No problem policy! To make things easier, we provide example data that have been processed according to ENIGMA protocols. Using these example data, you can complete all of the tutorials. Alternatively, easily replace our example data with other ENIGMA-derived datasets!
Development and getting involved ⚙¶
Should you have any problems, questions, or suggestions about the ENIGMA TOOLBOX, please do not hesitate to post them to our Github issues! Or are you interested in collaborating or sharing your ENIGMA-related codes/tools? Noice! Make sure you familiarize yourself with our contributing guidelines first and then discuss your ideas on our Github issues and pull request.
Enigmators 🦀¶
Sara Larivière, MICA Lab - Montreal Neurological Institute
Raúl Rodríguez-Cruces, MICA Lab - Montreal Neurological Institute
Bo-Yong Park, MICA Lab - Montreal Neurological Institute
Oualid Benkarim, MICA Lab - Montreal Neurological Institute
Jessica Royer, MICA Lab - Montreal Neurological Institute
Boris Bernhardt, MICA Lab - Montreal Neurological Institute