The Oak BlobStore is similar to the Jackrabbit 2.x DataStore. However, there are a few minor problems the BlobStore tries to address. Because, for the Jackrabbit DataStore:
a temporary file is created when adding a large binary, even if the binary already exists
sharding is slow and complicated because the hash needs to be calculated first, before the binary is stored in the target shard (the FileDataStore still doesn’t support sharding the directory currently)
file handles are kept open until the consumer is done reading, which complicates the code, and we could potentially get “too many open files” when the consumer doesn’t close the stream
for database based data stores, there is a similar (even worse) problem that streams are kept open, which means we need to use connection pooling, and if the user doesn’t close the stream we could run out of connections
for database based data stores, for some databases (MySQL), binaries are fully read in memory, which results in out-of-memory
binaries that are similar are always stored separately no matter what
Those problems are solved in Oak BlobStores, because binaries are split into blocks of 2 MB. This is similar to how DropBox works internally. Blocks are processed in memory so that temp files are never needed, and blocks are cached. File handles don’t need to be kept open. Sharding is trivial because each block is processed separately.
Binaries that are similar: in the BlobStore, currently, they are stored separately except if some of the 2 MB blocks match. However, the algorithm in the BlobStore would allow to re-use all matching parts, because in the BlobStore, concatenating blob ids means concatenating the data.
Another change was that most DataStore implementations use SHA-1, while the BlobStore uses SHA-256. Using SHA-256 will be a requirement at some point, see also http://en.wikipedia.org/wiki/SHA-2 “Federal agencies … must use the SHA-2 family of hash functions for these applications after 2010”. This might affect some potential users.
Jackrabbit 2 used DataStore to store blobs. Oak supports usage of such DataStore via DataStoreBlobStore wrapper. This allows usage of FileDataStore and S3DataStore with Oak NodeStore implementations.
Currently Oak provides two NodeStore implementations i.e. SegmentNodeStore and DocumentNodeStore. Further Oak ships with multiple BlobStore implementations
In addition there are some more implementations which are considered experimental
Depending on NodeStore type and usage requirement these can be configured to use a particular BlobStore implementation. For OSGi env refer to Configuring DataStore/BlobStore
By default SegmentNodeStore (aka TarMK) does not require a BlobStore. Instead the binary content is directly stored as part of segment blob itself. Depending on requirements one of the following can be used
By default DocumentNodeStore when running on Mongo uses MongoBlobStore. Depending on requirements one of the following can be used
The DataStore implementations S3DataStore,CachingFileDataStore and AzureDataStore support local file system caching for the files/blobs and extend the AbstractSharedCachingDataStore class which implements the caching functionality. The CachingFileDataStore is useful when the DataStore is on nfs. The cache has a size limit and is configured by the cacheSize parameter.
The local cache will be checked for existence of the record corresponding to the requested file/blob before accessing it from the DataStore. When the cache exceeds the limit configured while adding a file into the cache then some of the file(s) will be evicted to reclaim space.
The cache also supports asynchronous uploads to the DataStore. The files are staged locally in the cache on the file system and an asynchronous job started to upload the file. The number of asynchronous uploads are limited by the size of staging cache configured by the stagingSplitPercentage parameter and is by default set to 10. This defines the ratio of the cacheSize to be dedicated for the staging cache. The percentage of cache available for downloads is calculated as (100 - stagingSplitPerentage) * cacheSize (by default 90). The asynchronous uploads are also multi-threaded and is governed by the uploadThreads configuration parameter. The default value is 10.
The files are moved to the main download cache after the uploads are complete. When the staging cache exceeds the limit, the files are uploaded synchronously to the DataStore until the previous asynchronous uploads are complete and space available in the staging cache. The uploaded files are removed from the staging area by a periodic job whose interval is configured by the stagingPurgeInterval configuration parameter. The default value is 300 seconds.
Any failed uploads (due to various reasons e.g. network disruption) are put on a retry queue and retried periodically with the configured interval stagingRetryInterval. The default value for is 600 seconds.
The ConsolidatedDataStoreCacheStats is registered as an MBean and provides a snapshot of the cache performance for both the download and the upload staging cache.
The following table explains the different statistics exposed for both type of caches
| Parameters | DataStore-DownloadCache | DataStore-StagingCache |
|---|---|---|
| elementCount | Number of files cached | Pending file uploads in cache |
| requestCount | Number of files requested from cache | Number of file uploads requested |
| hitCount | Number of files served from cache | Number of files uploaded asynchronously |
| hitRate | Ratio of hits to requests | Ratio of hits to requests |
| loadCount | Number of files loaded when not in cache | Number of file requests from cache |
| loadSuccessCount | Number of files successfully loaded | Number of file requests served from cache |
| loadExceptionCount | Number of load file unsuccessful | Number of file requests not in cache |
| maxWeight | Max cache size (bytes) | Max cache size (bytes) |
| totalWeight | Current size of cache (bytes | Current size of cache (bytes)bytes |
| totalMemWeight | Approximate size of cache in-memory (bytes) | Approximate size of cache in memory (bytes) |
The parameters above can be used to size the cache. For example:
The MBean also exposes a method isFileSynced which takes a node path of a binary and returns whether the associated file/blob has been uploaded to the DataStore.
When upgrading from the older cache implementation the process should be seamless and any pending uploads would be scheduled for upload and any previously downloaded files in the cache will be put in the cache on initialization. There is a slight difference in the structure of the local file system cache directory. Whereas in the older cache structure both the downloaded and the upload files were put directly under the cache path. The newer structure segregates the downloads and uploads and stores them under cache path under the directories download and upload
respectively.
There is also an option to upgrade the cache offline by using the datastorecacheupgrade command of oak-run. The details on how to execute the command and the different parameters can be checked in the readme for the oak-run module.
Blob Garbage Collection(GC) is applicable for the following blob stores:
DocumentNodeStore
SegmentNodeStore
Oak implements a Mark and Sweep based Garbage Collection logic.
The garbage collection can be triggered by calling:
For the FileDataStore, S3DataStore and AzureDataStore the blob ids are cached locally on the disk when they are created which speeds up the ‘Mark BlobStore’ phase. The locally tracked ids are synchronized with the data store periodically to enable other cluster nodes or different repositories sharing the datastore to get a consolidated list of all blob ids. The interval of synchronization is defined by the OSGi configuration parameter blobTrackSnapshotIntervalInSecs for the configured NodeStore services.
If 2 garbage collection cycles are executed within the blobTrackSnapshotIntervalInSecs then there may be warnings in the logs of some missing blob ids which is due to the fact that the deletions due to earlier gc has not been synchronized with the data store. It’s ok to either ignore these warnings or to adjust the blobTrackSnapshotIntervalInSecs parameter according to the schedule identified for running blob gc.
When upgrading an existing system to take advantage of caching the existing blob ids have to be cached. One of the following should be executed.
On start of a repository configured to use a shared DataStore (same path, S3 bucket or Azure container), a unique repository id is generated and registered in the NodeStore as well as the DataStore. In the DataStore this repository id is registered as an empty file with the format repository-[repository-id] (e.g. repository-988373a0-3efb-451e-ab4c-f7e794189273). This empty file is created under:
On start/configuration of all the repositories sharing the data store it should be confirmed that the unique repositoryId per repository is registered in the DataStore. Refer the section below on Checking Shared GC status.
The high-level process for garbage collection is still the same as described above. But to support blob garbage collection in a shared DataStore the Mark and Sweep phase can be run independently.
The details of the process are as follows:
The shared DataStore garbage collection is applicable for the following DataStore(s):
The status of the GC operations on all the repositories connected to the DataStore can be checked by calling:
This operation can also be used to ascertain when the ‘Mark’ phase has executed successfully on all the repositories, as part of the steps to automate GC in the Shared DataStore configuration. It should be a sufficient condition to check that the references file is available on all repositories. If the server running Oak has remote JMX connection enabled the following code example can be used to connect remotely and check if the mark phase has concluded on all repository instances.
import java.util.Hashtable; import javax.management.openmbean.TabularData; import javax.management.MBeanServerConnection; import javax.management.MBeanServerInvocationHandler; import javax.management.ObjectName; import javax.management.remote.JMXConnectorFactory; import javax.management.remote.JMXServiceURL; import javax.management.openmbean.CompositeData; /** * Checks the status of the mark operation on all instances sharing the DataStore. */ public class GetGCStats { public static void main(String[] args) throws Exception { String userid = "<user>"; String password = "<password>"; String serverUrl = "service:jmx:rmi:///jndi/rmi://<host:port>/jmxrmi"; String OBJECT_NAME = "org.apache.jackrabbit.oak:name=Document node store blob garbage collection,type=BlobGarbageCollection"; String[] buffer = new String[] {userid, password}; Hashtable<String, String[]> attributes = new Hashtable<String, String[]>(); attributes.put("jmx.remote.credentials", buffer); MBeanServerConnection server = JMXConnectorFactory .connect(new JMXServiceURL(serverUrl), attributes).getMBeanServerConnection(); ObjectName name = new ObjectName(OBJECT_NAME); BlobGCMBean gcBean = MBeanServerInvocationHandler .newProxyInstance(server, name, BlobGCMBean.class, false); boolean markDone = checkMarkDone("GlobalMarkStats", gcBean.getGlobalMarkStats()); System.out.println("Mark done on all instances - " + markDone); } public static boolean checkMarkDone(String operation, TabularData data) { System.out.println("-----Operation " + operation + "--------------"); boolean markDoneOnOthers = true; try { System.out.println("Number of instances " + data.size()); for (Object o : data.values()) { CompositeData row = (CompositeData) o; String repositoryId = row.get("repositoryId").toString(); System.out.println("Repository " + repositoryId); if ((!row.containsKey("markEndTime") || row.get("markEndTime") == null || row.get("markEndTime").toString().length() == 0)) { markDoneOnOthers = false; System.out.println("Mark not done on repository : " + repositoryId); } } } catch (Exception e) { System.out.println( "-----Error during operation " + operation + "--------------" + e.getMessage()); } System.out.println("-----Completed " + operation + "--------------"); return markDoneOnOthers; } }
If a repository no longer shares the DataStore then it needs to be unregistered from the shared DataStore by following the steps:
The data store consistency check will report any data store binaries that are missing but are still referenced. The consistency check can be triggered by:
After the consistency check is complete, a message will show the number of binaries reported as missing. If the number is greater than 0, check the logs configured for org.apache.jackrabbit.oak.plugins.blob .MarkSweepGarbageCollector for more details on the missing binaries.
Below is an example of how the missing binaries are reported in the logs:
11:32:39.673 INFO [main] MarkSweepGarbageCollector.java:600 Consistency check found 1 missing blobs 11:32:39.673 WARN [main] MarkSweepGarbageCollector.java:602 Consistency check failure in the the blob store : DataStore backed BlobStore [org.apache.jackrabbit.oak.plugins.blob.datastore.OakFileDataStore], check missing candidates in file /tmp/gcworkdir-1467352959243/gccand-1467352959243


| Multirotor Design Team |
|---|
Chief Software EngineerMay 2022 - Present
|
| Ameren |
|---|
Digital Software InternMay 2022 - Aug 2022
|
| Multirotor Design Team |
|---|
Computer Vision Team MemberAug 2019 – Aug 2020, Aug 2021 – Aug 2022
|
| Ameren |
|---|
App Development Student Co-opMay 2021 - May 2022
|
| Multirotor Design Team |
|---|
Computer Vision Team LeadAug 2020 – Aug 2021
|


-
PROFILE
-
Hello, I am Quang Nguyen
Web Developer
Highly organized, self-motivated Telecommunication engineer with 12+ years’ experience in telecommunication and insight in technologies, tools and methods within the field of mobile and transmission.
5-year data technician education in IT & Communication from TEC (Technical education center) Ballerup, Denmark
Good technical knowledge in RAN and transmission technologies such as 2G, 3G, LTE and fiber transmission.
Intend to build a career with leading corporate of hi-tech environment with committed & dedicated people
Work from office in Malmö, I am born 20 of October 1982 and live with my girlfriend in Copenhagen.
My first language is Danish and I can speak and write Swedish, English and Norwegian -
Personal Info
-
Work experience
-
RAN engineer consultant, NBR, WE Consulting Malmö
July 2013 – NowSelf-Employed consultant (Pihl consulting)
Same project:
Responsible for all neighbor relations and some cell parameters in TeliaSonera Sweden network.
Updating network with new plans (NSN and Ericsson)
Consistency check and identifying faults.Involved in refarming, swapp and rollout.
Among platforms and tools:
Ericsson OSS-RC GSM/UMTS, Netact 2G/3G, NMTGIS, HP Service Manager.
Graphic Designer
2010 - 2012Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Web Security
2008 - 2010Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
Courses
-
Courses
-
CONTACT
-
Contact Me
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
-
Contact Info
Quang Nguyen
4628 Trail Lake Dr
Fort Worth, TX 76133
Phone
(714) 487-3245 Email
quang.nguyen787@tcu.edu


tjx-companies
Businessmodel of TJX Companies
Customer Segments
TJX operates several retail chains that cater to slightly different customer segments. These chains, however, are all discount retailers, providing products to customers at low prices. The Company’s customer, therefore, principally comprise general consumers that are shopping on a budget, looking for good deals and cheap prices. Consumers such as this are typically individuals, often from working families, who are form a lower income bracket and who consequently have less disposable income.
TJX’s key market is its native US, where it is the largest discount retailer by number of stores, via its TJ Maxx and Marshalls brands. The Company also serves a similar customer base in Canada through the Winners, HomeSense and Marshalls, as well as in Europe, in particular the UK, where it operates its TK Maxx and HomeSense chains.
Value Propositions
TJX provides value to its customers in the following was:
- Its size and standing, with the Company established as one of the largest dedicated discount retailers in the world, operating a number of popular retail chains both domestically and internationally;
- Its brand portfolio, with the Company operating several well-known retail brands, notably its TJ Maxx, Marshalls, and HomeSense chains, serving a diverse customer base;
- Its varied range of products, with the Company’s retail chains selling a broad range of products, spanning apparel, homeware, and other merchandise;
- Its extensive network of retail outlets, with the Company operating a network of more than 3,000 store locations in the US and Canada alone, as well as a large network of outlets in Europe, ensuring that it is able to reach its customers easily across all of its operating regions;
- Its low prices, with the Company offering its customers exceptional value for money with its low prices, as well as through its regular deals and discounts, and store loyalty rewards schemes. ### Channels
TJX operates a website at www.tjx.com, through which it provides information on its various brands, operating jurisdictions, and corporate activities. The Company also operates separate websites for its major brands, including www.tjmaxx.tjx.com, www.marshallsonline.com, and www.homesense.com. In addition to providing more brand-specific information, these individual websites all also function as online retail channels, allowing customers to browse products, place orders, and schedule deliveries.
TJX most notably serves its customers through its physical retail outlets. This comprises a network of more than 3,600 individual retail outlets across nine countries worldwide, namely the US, Canada, the UK, Ireland, Germany, Poland, Austria, the Netherlands, and Australia. The Company makes its sales directly to customers through its in-store sales and service personnel.
TJX also operates its own extensive distribution network across its operating regions, with distribution centres spread across the US, Canada, and Europe. This enables the Company to serve its own outlets directly and fulfil online orders quickly and efficiently.
Customer Relationships
TJX provides a range of products and services to its customers on a self-service basis. The websites of the Company’s individual brands, notably TJ Maxx, Marshalls, and HomeSense, serve as online retail channels, through which customers can browse products, make purchases, and organise deliveries without interacting directly with members of the Company’s sales and service personnel.
TJX also provides personal assistance to customers through its teams of in-store staff, who are available directly handle customer complaints, enquiries, and product returns. Alternatively, customers are able to contact customer services representatives over the phone or via email for each of the Company’s brands, in order to receive tailored responses to enquiries.
Additionally, each of TJX’s brands offers a range of online resources, including delivery and shipping information, and FAQs that can be accessed independently. The Company and its brands also maintains a number of social media accounts, including with Facebook, Twitter, LinkedIn, and YouTube, through which it is able to interact with customers directly.
Key Activities
TJX is an off-price apparel and home fashions retailer based in the US. The Company operates aligns its operations into four reportable business segments: Marmaxx, which operates the Company’s TJ Maxx and Marshalls-branded retail chains in the US, which are collectively comprise the largest off-price retailer in the US, with a total of around 2,163 stores; HomeGoods, which comprises the Company’s HomeSense retail chain, which sells a range of discount homeware items; TJX Canada, which operates the Winners, HomeSense and Marshalls retail chains in Canada; and TJX International, which operates the Company’s TK Maxx and HomeSense retail chains across Europe and in Australia. TJX operates more 3,600 retail outlets worldwide, across nine countries spanning North America, Europe, and Australia.
Key Partners
TJX works in collaborations with a network of service providers and suppliers, allowing it to provide high-quality services to its customers. These partners can be organised broadly into the following categories:
- Supplier and Vendor Partners, comprising suppliers of various products and merchandise that are resold by the Company through its retail outlets, as well as suppliers of services, technologies and equipment that support the Company’s operations more broadly;
- Channel and Distribution Partners, comprising various distribution and logistics companies that assist the Company in transporting products and merchandise to its stores, and help to complete certain online customer orders;
- Community and Social Partners, comprising various non-profits and charitable organisations, with which the Company collaborates of on social and community projects at home and abroad; and
- Strategic and Alliance Partners, including a number of market-leading companies across multiple business sectors, with which the Company works on joint marketing, branding, and other strategic projects. TJX has a number partnerships in place. This includes a longstanding charitable partnership with Cancer Research UK, and a recent strategic alliance with Capital One to launch a Visa marketing campaign.
Key Resources
TJX’s key resources are its brand portfolio and intellectual properties, its products and supply chain, its online stores, its IT and communications infrastructure, its physical retail outlets, its distribution infrastructure, its partnerships, and its personnel.
TJX owns and or leases a number of physical properties that are key to its core retail operations. This notably includes the Company’s network of more than 3,600 leased store locations across the US, Canada, Europe, and Australia. The Company also owns and or leases a number of distribution centres and administrative office locations across the US, Canada, the UK, Australia, Poland, and Germany.
While the Company owns a number of key brands and trademarks, searches of records published by the US Patent and Trademark Office identified no patent applications filed in the name of TJX.
Cost Structure
TJX incurs cost in relation to the procurement of products and merchandise, the procurement of other services, the operation and development of its online stores, the maintenance of its IT and communications infrastructure, the operation of its sales and distribution infrastructure, the implementation of marketing and advertising campaigns, the management of its partnerships, and the retention of its personnel.
In 2015 TJX recorded total cost of sales – including occupancy costs – in the amount of $22.02 billion, the Company’s largest expense. This was followed by selling, general, and administrative costs, which totalled $5.21 billion for the year.
Revenue Streams
TJX generates revenue through the sale of various apparel, homeware, and other merchandise through its portfolio of off-price retail brands. The Company’s revenue is derived principally in the form of direct sales made to customers either at its physical outlets or online.
In 2015 TJX recorded net sales for the year in the amount of $30.94 billion, up slightly on the $29.08 billion recorded by the Company in 2014. The Company’s largest revenue generator is its Marmaxx segment, which alone accounted for annual net sales of $19.95 billion. The Company’s HomeGoods, TJX Canada, and TJX Europe segments recorded relatively even sales of $3.92 billion, $2.85 billion, and $4.23 billion respectively.


R/SHAP_funcs.R
shap.plot.summary.Rd
The summary plot (a sina plot) uses a long format data of SHAP values. The
SHAP values could be obtained from either a XGBoost/LightGBM model or a SHAP value
matrix using shap.values
. So this summary plot function
normally follows the long format dataset obtained using shap.values
. If you
want to start with a model and data_X, use
shap.plot.summary.wrap1
. If you want to use a self-derived
dataset of SHAP values, use shap.plot.summary.wrap2
. If a list
named new_labels is provided in the global environment (new_labels
is
pre-loaded by the package as NULL
), the plots will use that list to
label the variables, here is an example of such a list (the default labels):
labels_within_package
.
shap.plot.summary( data_long, x_bound = NULL, dilute = FALSE, scientific = FALSE, my_format = NULL )
| data_long | a long format data of SHAP values from
|
|---|---|
| x_bound | use to set horizontal axis limit in the plot |
| dilute | being numeric or logical (TRUE/FALSE), it aims to help make the test plot for large amount of data faster. If dilute = 5 will plot 1/5 of the data. If dilute = TRUE or a number, will plot at most half points per feature, so the plotting won't be too slow. If you put dilute too high, at least 10 points per feature would be kept. If the dataset is too small after dilution, will just plot all the data |
| scientific | show the mean|SHAP| in scientific format. If TRUE, label format is 0.0E-0, default to FALSE, and the format will be 0.000 |
| my_format | supply your own number format if you really want |
returns a ggplot2 object, could add further layers.
data("iris") X1 = as.matrix(iris[,-5]) mod1 = xgboost::xgboost( data = X1, label = iris$Species, gamma = 0, eta = 1, lambda = 0, nrounds = 1, verbose = FALSE) # shap.values(model, X_dataset) returns the SHAP # data matrix and ranked features by mean|SHAP| shap_values <- shap.values(xgb_model = mod1, X_train = X1) shap_values$mean_shap_score#> Petal.Length Petal.Width Sepal.Length Sepal.Width #> 0.62935975 0.21664035 0.02910357 0.00000000shap_values_iris <- shap_values$shap_score # shap.prep() returns the long-format SHAP data from either model or shap_long_iris <- shap.prep(xgb_model = mod1, X_train = X1) # is the same as: using given shap_contrib shap_long_iris <- shap.prep(shap_contrib = shap_values_iris, X_train = X1) # **SHAP summary plot** shap.plot.summary(shap_long_iris, scientific = TRUE)shap.plot.summary(shap_long_iris, x_bound = 1.5, dilute = 10)# Alternatives options to make the same plot: # option 1: from the xgboost model shap.plot.summary.wrap1(mod1, X = as.matrix(iris[,-5]), top_n = 3)# option 2: supply a self-made SHAP values dataset # (e.g. sometimes as output from cross-validation) shap.plot.summary.wrap2(shap_score = shap_values_iris, X = X1, top_n = 3)


|
Perl Weekly
Issue #62 - 2012-10-01 - Perl Maven competition
latest | archive | by Gabor Szabo
|
|
Hi,
I am currently on vacation in Budapest and traveling to Prague for a few days. Before I left home I already prepared part of the newsletter. And then managed to leave it locked on my desktop. Anyway, I hope I could put together a decent issue. In the end it mostly depends on the articles you write. I just collect them.
One thing I did, just before leaving, was to announce the Perl Maven Competition. It is a 48-hour competition to build awesome stuff. You can find the detailed announcement below.
See you next week!
|
|
|
Announcements
|
Beginning Perl (Wrox) is now released
Ovid is announcing the availability of his Perl book. As he writes: If you're interested in Perl but worried about the title, the book actually takes you all the way through OO programming and even has introductory sections on Catalyst, DBIx::Class, Plack, and other tools. It's fairly comprehensive.
|
|
Announcing the Perl Maven Competition
Some other languages already have it. It's time for the Perl developers to show the world they can also build beautiful applications. The planning has started.
|
|
|
|
Articles
|
|
|
GoogleTalk with Perl
Are you bored? Do you want to chat with someone? Here is a description how to set up a script that will start a conversation with you whenever you want. You only need an extra Google account a bit of Perl code.
|
|
Sqitch Symbolism
David Wheeler describes the most recent changes in Sqitch, but what might be more interesting is that you can now easily translate Sqitch to your language. The slides from PDXPUG are also included as a bonus.
|
|
Discussion
|
vworker for Perl or how to finance fixing CPAN modules?
Neil Bowers brought up an idea, that, if I understand it correctly, basically would be a way to allow you to finance the development of features or the fixing of bugs in CPAN modules or other open source Perl projects. I think this is a very good initiative. What do you think? Will you use it?
|
|
Releases
|
Hypatia: Now with Column Guessing!
Hypatia, the module between DBI and data visualization libraries can now automatically map the database columns to the x and y axis of the graph.
|
|
Code
|
|
|
Perl 6
|
|
|
|
|
Other
|
To understand the command line...
If you know how to name things and if you know why they have that name, you can understand them much better. Do you know why awk, grep less and vi have that name? Dominic Humphries will explain to you in a very readable story.
|
|
YAPC::Asia
|
YAPC::Asia Tokyo 2012 Day -1
Daisuke Maki (lestrrat) provides us with daily coverage from the biggest Perl conference on Earth. This is day -1, but if you check his later posts, you'll find the reports from during the conference itself.
|
|
Weekly collections
|
|
|
|
|
|
|
|
|
Events
I usually list the next 3-4 events here. The list of all the events can be found on the web site. If your Perl event is not listed there, please let me know.
|
|
|
|
|
|
|
|
|
You know, you could get the Perl Weekly right in your mailbox. Every Week. Free of charge!
|


Tracing support namespace. More...
Functions | |
| void | dbg_bkpt (void) |
| Insert a BKPT0 for debugger usage. | |
| void | dump_args (int argc, char *argv[]) |
| Write the argv[] array to the trace device. | |
| void | flush (void) |
| Flush the output. | |
| void | initialize (void) |
| int | printf (const char *format,...) |
| Write a formatted string to the trace device. | |
| int | putchar (int c) |
| Write the single character to the trace device. | |
| int | puts (const char *s) |
| Write the string and a line terminator to the trace device. | |
| int | vprintf (const char *format, std::va_list args) |
| Write a formatted variable arguments list to the trace device. | |
| ssize_t | write (const void *buf, std::size_t nbyte) |
| Write the given number of bytes to the trace output channel. | |
Tracing support namespace.
The trace device is an independent output channel, intended for diagnostic purposes.
The API is simple, and mimics the standard C output calls:
os::trace::printf()
/ trace_printf()
os::trace::puts()
/ trace_puts()
os::trace::putchar()
/ trace_putchar()
The implementation is done in:
If these functions are not defined in another place, there are weak definitions that simply discard the trace output.
Trace support is enabled by adding the TRACE
macro definition.
When TRACE
is not defined, all functions are inlined to empty bodies. This has the advantage that the trace calls do not need to be conditionally compiled with #ifdef TRACE
/ #endif
|
inline |
| void os::trace::flush | ( | void | ) |


Enhancify is a groundbreaking app unlike no other facial enhancer. Utilizing optimized algorithms, Enhancify is able to reduce all physical imperfections digitally, allowing you to appear truly flawless. Need to impress that 10 on tindr? Simply use Enhancify and we guarantee people will swipe right on you. Enhancify has conducted large scale scientific study across the globe, returning one hundred percent success rate in attracting mates.
Enhancify analyzes over four-hundred and twenty aspects of the human face, comparing them to vast databases of photoshopped celebrities to determine what changes need to be made to accomplish perfection. After initial analysis, Enhancify works pixel by pixel to carefully construct your image. Once the adjustments have been made, a proof checking bot analyzes the image to ensure that even the most minute imperfection is taken care of.
This project was built at WildHacks, a 24 hour Hackathon at Northwestern University in November 2014. This project was built with the help of Bootstrap, Dropzone.js, and facial recognition from Jay Salvat.


public abstract class OutputStream extends AutoCloseable
flush()
method to be called before closing the stream, to ensure all data is
actually written through.
This abstract class does not provide a fully working implementation, so it needs to be subclassed, and at least the
write(int)
method needs to be overridden. Overriding some of the non-abstract methods is also often advised,
since it might result in higher efficiency.InputStream
| Constructor and Description |
|---|
OutputStream() |
| Modifier and Type | Method and Description |
|---|---|
void |
close()
Closes this stream, freeing any resources associated with it and then calling the closedListener, if one is set.
|
protected abstract void |
doClose()
This is an internal method, implemented by subclasses to close any resources associated with the stream.
|
void |
flush()
Flushes this stream.
|
ClosedListener |
getClosedListener() |
void |
setClosedListener(ClosedListener closedListener)
A ClosedListener provides a way to be notified when the stream is closed.
|
void |
write(byte[] buffer)
Writes the entire contents of the byte array
buffer to this stream. |
void |
write(byte[] buffer,
int offset,
int length)
Writes
count bytes from the byte array buffer starting at position offset to this
stream. |
void |
write(ByteArrayRange byteArrayRange) |
abstract void |
write(int oneByte)
Writes a single byte to this stream.
|
void |
writeLatin1EncodedString(java.lang.String s)
Write the string, assumed to contain only Latin1 characters (Unicode low 256 characters), to the stream.
|
void |
writeUtf8EncodedString(java.lang.String s)
Write the string to the stream using UTF-8 encoding.
|
public void write(byte[] buffer)
buffer
to this stream.buffer
- the buffer to be writtenIOException
- if an error occurs while writing to this streampublic void write(byte[] buffer, int offset, int length)
count
bytes from the byte array buffer
starting at position offset
to this
stream.buffer
- the buffer to be writtenoffset
- the start position in buffer
from where to get byteslength
- the number of bytes from buffer
to write to this streamIOException
- if an error occurs while writing to this streampublic void write(ByteArrayRange byteArrayRange)
public abstract void write(int oneByte)
oneByte
is written to
the stream.oneByte
- the byte to be written.java.io.IOException
- if an error occurs while writing to this stream.public void writeLatin1EncodedString(java.lang.String s)
s
- string to writepublic void flush()
IOException
- if an error occurs while flushing this streampublic void writeUtf8EncodedString(java.lang.String s)
s
- string to writepublic final void close()
close
in interface java.lang.AutoCloseable
close
in class AutoCloseable
IOException
- if an error occurs while closing this stream.protected abstract void doClose()
IOException
- if an error occurs while closing this stream.@Nullable public ClosedListener getClosedListener()
public void setClosedListener(@Nullable ClosedListener closedListener)
closedListener
-


Knock, Knock, I'm here. With Who's There, you can send hassle free notifications to your friends with a rap of your knuckles. (Without even taking your phone out of your pocket!)
We leveraged the iPhone's accelerometer in tandem with the Parse/Facebook API to convert sequences of 'knock' impulses into live notifications sent to your Facebook friends.
With Who's There, you can even customize your Knock message and set different Knock counts for different friends.
We aimed to build a simple solution to sending notifications without taking your phone out of your pocket.
We see Who's There there to be used in many cases and believe the applications potential is astounding. For example, Accessibility - the ability to send notifications without any thoughtful interaction with the phone could be useful for individuals with disabilities, signaling for assistance by simply knocking on the surface of their phone. What's limiting this app to sending notifications? The knock detection scheme could be used to trigger any events such as turning on and off light switches.
We sampled the accelerometer data to determine what registered when knocking on the phone.  We used Python to develop an algorithm based on a high-pass filter that would reject low frequency noise. We ran very rudimentary machine learning routines to determine the optimal threshold values for our filter and then ported to Objective-C!


Main Text of Home Page
Every One wants the best care for their children and I believe that HOME DAYCARES care PERFECTLY of our little ones. We all Love our sweet children. They are our most important responsibility The deserve to be happy and raise in a good condition.We all want the same things for our kids. We want them to grow up to love and be loved, to follow their dreams, to find success. Mostly, though, we want them to be happy. But just how much control do we have over our children's happiness What can you do to create a home where your child's happiness will flourish?


myNanoEmbedded is a lightweight C library of source files that integrates Nano Cryptocurrency to low complexity computational devices to send/receive digital money to anywhere in the world with fast trasnsaction and with a small fee by delegating a Proof of Work with your choice:
- DPoW (Distributed Proof of Work)
- P2PoW (a Descentralized P2P Proof of Work)
API features
- Attaches a random function to TRNG hardware (if available)
- Self entropy verifier to ensure excelent TRNG or PRNG entropy
- Creates a encrypted by password your stream or file to store your Nano SEED
- Bip39 and Brainwallet support
- Convert raw data to Base32
- Parse SEED and Bip39 to JSON
- Sign a block using Blake2b hash with Ed25519 algorithm
- ARM-A, ARM-M, Thumb, Xtensa-LX6 and IA64 compatible
- Linux desktop, Raspberry PI, ESP32 and Olimex A20 tested platforms
- Communication over Fenix protocol bridge over TLS
- Libsodium and mbedTLS libraries with smaller resources and best performance
- Optmized for size and speed
- Non static functions (all data is cleared before processed for security)
- Fully written in C for maximum performance and portability
To add this API in your project you must first:
-
Download the latest version.
git clone https://github.com/devfabiosilva/myNanoEmbedded.git --recurse-submodules
-
Include the main library files in the client application.
Initialize API
| Function | Description |
| f_random_attach() | Initializes the PRNG or TRNG to be used in this API |
Transmit/Receive transactions
To transmit/receive your transaction you must use Fenix protocol to stabilish a DPoW/P2PoW support
Examples using platforms
The repository has some examples with most common embedded and Linux systems
Credits
- Author
- Fábio Pereira da Silva
- Date
- Feb 2020
- Version
- 1.0
- Copyright
- License MIT see here
References:
[1] - Colin LeMahieu - Nano: A Feeless Distributed Cryptocurrency Network - (2015)
[2] - Z. S. Spakovszky - 7.3 A Statistical Definition of Entropy - (2005) - NOTE: Entropy function for cryptography is implemented based on Definition (7.12) of this amazing topic
[3] - Kaique Anarkrypto - Delegated Proof of Work - (2019)
[4] - docs.nano.org - Node RPCs documentation


public interface MetadataMap
MetadataKey
s, and maps them to persistent or transient (expiring / weak) values.
Transient values will only be removed during map maintenance, which occurs during a housekeeping task running
every minute. Method signatures for the has(MetadataKey)
and equivalent remain accurate though.TransientValue
| Modifier and Type | Method and Description |
|---|---|
ImmutableMap<MetadataKey<?>,Object> |
asMap()
Returns an immutable view of the backing map
|
void |
clear()
Clears the map
|
static MetadataMap |
create() |
<T> void |
forcePut(MetadataKey<T> key,
T value)
Adds a metadata key and corresponding value into this map, removing any previous value if present.
|
<T> void |
forcePut(MetadataKey<T> key,
TransientValue<T> value)
Adds a metadata key and corresponding value into this map, removing any previous value if present.
|
<T> Optional<T> |
get(MetadataKey<T> key)
Gets an optional value for the given key.
|
<T> T |
getOrDefault(MetadataKey<T> key,
T def)
Gets a value for the given key, or returns the default if one isn't present.
|
<T> T |
getOrNull(MetadataKey<T> key)
Gets a value for the given key, or null if one isn't present.
|
<T> T |
getOrPut(MetadataKey<T> key,
Supplier<T> def)
Gets a value for the given key, or puts and returns the default if one isn't present.
|
<T> T |
getOrPutExpiring(MetadataKey<T> key,
Supplier<TransientValue<T>> def)
Gets a value for the given key, or puts and returns the default if one isn't present.
|
boolean |
has(MetadataKey<?> key)
Returns if this map contains the given key, and the types of each key match.
|
<T> boolean |
ifPresent(MetadataKey<T> key,
Consumer<? super T> action)
Attempts to get a value for the given key, and applies the action is present.
|
boolean |
isEmpty()
Returns if the map is empty
|
<T> void |
put(MetadataKey<T> key,
T value)
Adds a metadata key and corresponding value into this map, removing any previous value if present.
|
<T> void |
put(MetadataKey<T> key,
TransientValue<T> value)
Adds a metadata key and corresponding value into this map, removing any previous value if present.
|
<T> boolean |
putIfAbsent(MetadataKey<T> key,
T value)
Adds a metadata key and corresponding value into this map, only if an existing key is not present.
|
<T> boolean |
putIfAbsent(MetadataKey<T> key,
TransientValue<T> value)
Adds a metadata key and corresponding value into this map, only if an existing key is not present.
|
boolean |
remove(MetadataKey<?> key)
Removes the given key from this map
|
@Nonnull static MetadataMap create()
<T> void put(@Nonnull MetadataKey<T> key, @Nonnull T value)
ClassCastException
will be
thrown if they do not share the same type, and the existing value will remain.T
- the value typekey
- the key to putvalue
- the value to map against (non null)ClassCastException
- if any existing key with the same id has a differing type to the key being add<T> void put(@Nonnull MetadataKey<T> key, @Nonnull TransientValue<T> value)
ClassCastException
will be
thrown if they do not share the same type, and the existing value will remain.T
- the value typekey
- the key to putvalue
- the value to map against (non null)ClassCastException
- if any existing key with the same id has a differing type to the key being add<T> void forcePut(@Nonnull MetadataKey<T> key, @Nonnull T value)
put(MetadataKey, Object)
, the existing value if present does not need to have the same type.T
- the value typekey
- the key to putvalue
- the value to map against (non null)<T> void forcePut(@Nonnull MetadataKey<T> key, @Nonnull TransientValue<T> value)
put(MetadataKey, Object)
, the existing value if present does not need to have the same type.T
- the value typekey
- the key to putvalue
- the value to map against (non null)<T> boolean putIfAbsent(@Nonnull MetadataKey<T> key, @Nonnull T value)
T
- the value typekey
- the key to putvalue
- the value to map against (non null)<T> boolean putIfAbsent(@Nonnull MetadataKey<T> key, @Nonnull TransientValue<T> value)
T
- the value typekey
- the key to putvalue
- the value to map against (non null)@Nonnull <T> Optional<T> get(@Nonnull MetadataKey<T> key)
T
- the value typekey
- the metadata key to getClassCastException
- if there is a key held in the map with the same id but differing type to the given key.<T> boolean ifPresent(@Nonnull MetadataKey<T> key, @Nonnull Consumer<? super T> action)
T
- the value typekey
- the metadata key to lookupaction
- the action to applyClassCastException
- if there is a key held in the map with the same id but differing type to the given key.@Nullable <T> T getOrNull(@Nonnull MetadataKey<T> key)
T
- the value typekey
- the metadata key to getClassCastException
- if there is a key held in the map with the same id but differing type to the given key.@Nonnull <T> T getOrDefault(@Nonnull MetadataKey<T> key, @Nullable T def)
T
- the value typekey
- the metadata key to getdef
- the default valueClassCastException
- if there is a key held in the map with the same id but differing type to the given key.@Nonnull <T> T getOrPut(@Nonnull MetadataKey<T> key, @Nonnull Supplier<T> def)
T
- the value typekey
- the metadata key to getdef
- the default valueClassCastException
- if there is a key held in the map with the same id but differing type to the given key.@Nonnull <T> T getOrPutExpiring(@Nonnull MetadataKey<T> key, @Nonnull Supplier<TransientValue<T>> def)
T
- the value typekey
- the metadata key to getdef
- the default valueClassCastException
- if there is a key held in the map with the same id but differing type to the given key.boolean has(@Nonnull MetadataKey<?> key)
key
- the key to check forboolean remove(@Nonnull MetadataKey<?> key)
key
- the key to removevoid clear()
@Nonnull ImmutableMap<MetadataKey<?>,Object> asMap()
boolean isEmpty()
Copyright © 2017. All rights reserved.


{% if top_player.csgo_info %}
- Kill/deaths ratio: {{ top_player.kill_death_ratio | round(2) }}
- Rank: {{ top_player.humanized_elo }}
- Hours played: {{ '{0:,}'.format((top_player.csgo_info.total_time_played / 3600) | round(0)) }}
- Bombs planted: {{ top_player.csgo_info.total_planted_bombs }}
- rounds won: {{ top_player.csgo_info.total_wins }}
{% endif %}


Preparation time
less than 30 mins
Cooking time
10 to 30 mins
Serves
Serves 1
Dietary
Preheat the oven to 200C/400F/Gas 6.
For the tart, place the pastry rectangle onto a baking sheet.
Place the sliced figs onto the pastry, and sprinkle over the sugar, vanilla extract and hazelnuts.
Carefully place the pastry lattice on top of the figs then brush with the egg.
Transfer into the oven for 10 minutes until golden.
Remove from the oven, and cut the fig tart into slices.
For the spicy wine syrup, heat all the ingredients in a saucepan over a medium heat and gently cook to dissolve the sugar.
When the sugar has dissolved, turn up the heat to high and rapidly boil the liquid to reduce until thick and syrupy.
To serve, place the fig tart slices one on top of the other and drizzle over the syrup.


Use that alluring beauty, and show us what you've got.
Good news for you, as we've extended the registration dates to March 10th! Send us a mail at<EMAIL_ADDRESS>to register.
Bring that swagger to the ramp, this PEARL'15.
Manthan 2015 NGO Conference
Manthan is a conference that is going to be organized by Nirmaan Organization, to provide a platform for various Non-Governmental Organizations to display their work and interact with other NGOs and corporate. Through this, volunteers working for the same cause have an opportunity to collaborate and brainstorm on a range of issues catering to society and how to change it for the better. This conference will be held during Pearl, in BITS Pilani Hyderabad Campus with an agenda that begins with the arrival of the Chief Guest followed by the introduction and inauguration of every NGO. Stalls will be put up to showcase Each NGO work in Physical format. Debates on issues like the RTI act, volunteerism and will also be conducted subject to time constraints.
Corporate firms will get a chance to view, examine and frame a case study on all the NGOs, choose a competent one from a wide range which cater to a social cause of their interests and provide support by funding them under their Corporate Social Responsibility fund. This contribution would further enable the NGOs to employ more resources in their developmental work. It would also stretch out to a wide range of programmes like education, health, community development, self-employment, female foeticide etc. that work towards the holistic development of the country and would be reaching the ones who need it the most.
Contact:
Likith -<PHONE_NUMBER>
Here we present to you, Style Royale, a Hip Hop Jam integrating various elements of Hip Hop to recreate the vibe and the essence of the culture for all you Hip Hop Junkies out there!
For the first time in the history of Pearl, a dance competition unrivalled. Be prepared to be amazed by the show of a perfect mix of Musicality, Technique, Grooves, Flava, Vocabulary, Artistry, Originality and Execution from the best of the best. Bringing Street dance to Pearl for the first time - The Style Royale - 6 Cyphers. Witness the one-on-one battle of the best dancers from all over India that will blow away your mind!
For 1v1 breaking -
1st round are prelim battles -
Participants go against each other and are scored on different criteria and handpicked top proceed with top 16.
In the prelim battle, there is no winner / loser, it is only for selection for top 16.
From top 16 and above till the semis, i.e semi finals, there will be 2 rounds / throwdowns per participant.
Thus,
Top 16 Selection / prelims - 1 round / throwdown per person
Top 16 - 1 round / throwdown per person
Top 8 - 1 round / throwdown per person
Top 4 (Semis) - 2 rounds / throwdowns per person
Top (Finals) - 3 rounds / throwdowns per person
A total of 8 rounds for the entire battle.
Time limit : max 1 minute throwdowns.
For 1v1 Jack of Allstyles -
1st round are prelim battles -
Participants go against each other and are scored on different criteria and handpicked top proceed with top 16.
In the prelim battle, there is no winner / loser, it is only for selection for top 16.
Rounds / Throwdowns per battle -
Top 16 Selection / prelims - 1 round / throwdown per person
Time limit : max 30 second throwdowns.
Top 16 - 3 rounds / throwdowns per person
Time limit : max 30 second throwdowns.
Top 8 - 3 rounds / throwdowns per person
Time limit : max 30 second throwdowns.
Top 4 (Semis) - 3 rounds / throwdowns per person
Time limit : max 45 second throwdowns.
Top (Finals) - 3 rounds / throwdowns per person
Time limit : max 45 second throwdowns.
A total of 13 rounds for the entire battle.
Rules :
1st round will be Housing
2nd round will be Hip Hop
3rd round will be an Openstyle battle ( meaning it is a freestyle round, open to your choosing of style ).
This pattern of the three rounds will continue from top 16 till the finals.
Rs. 100 for the Style Royale entry fee. Rs. 100 for each category.
Panache. Haute. Glamour.
Not just words to us but commandments to live by.
This March, Pearl brings to you the ultimate campus diva hunt (MISS DIVA,Hyderabad Regional). Join us as we search for the diamonds in the hay stack.
BE THE NEXT MISS DIVA
THE WORLD FEST
For the very first time in the history of BITS Pilani Hyderabad Campus, we present you The World Fest!
Two international performers performing on our national cultural fest Pearl'15.
1. Lisa Angel performing Hoola hoop
on 14th March.
2. Neptune Chapotin performing Unicycle fire stunts
on 15th March.
In association with
The WorldFest
and
JebKhaali.in
Quite arguably the signature event of Pearl . Preliminary rounds are held in various cities across the country like Bangalore, Guwahati, Delhi, Hyderabad and Mumbai.
Undoubtedly one of the best platforms in the country for semi-professional bands, 6 teams make it to the finals, and the winner gets to open for our much acclaimed international act during Pearl 2015, apart from, of course, the hugely attractive prize money!
This Pearl 2015, we are back with Aspire Talks with a dazzling array of speakers from various walks of life. Their journeys will motivate you and give you impetus to pursue your dreams.
We promise an unforgettable experience to those looking for insight and inspiration.
The annual Gaming event of Bits-Pilani Hyderabad campus. Spanning over 3 days of non stop gaming involving games like Counter Strike 1.6 , DOTA, FIFA CoD:MW and Blur, it is one of the biggest gaming festivals in India.
Fraglore 2014 was a national level Lan-Gaming event conducted during Pearl’14 - the annual cultural and technical festival of BITS Pilani Hyderabad campus and sponsored by Sparkle Computers and SVM mall.
Top players and clans from all over India are expected to attend the event.
There are certain moments when one gets the impression of there being a form of collective consciousness that links people together. And there are few moments where one gets a higher dose of this, than when seeing a perfectly choreographed and coordinated dance.
This Pearl, the Dance Club of BITS Pilani Hyderabad campus brings to you - Terpsichore. The ultimate battle of dance crews from all over India to be better than the best.
Rules:
1. Maximum of 16 participants per team.
2. There will be 2 rounds after an initial elimination round.
3. There will be an elimination round in The Dance Room
Round I: THE GROUP DANCE :-
1. Selected teams will be notified about the details of the First round
2. Minimum six (6) dancers on stage.
3. Team can't have only one dancer dancing for more than 15 seconds while other members are standing still.
4. Time limit (excluding briefing time) Max: 8 min. Min: 5min.
5. All forms of dance allowed.
6. Weightage for costumes, music, choreography and coordination.
7. Fusion allowed.
8. Negative marking on exceeding time limit or if the number of dancers on stage are less than 6 and disqualification for exceeding the number of participants.
9. If props are used, prior permission is required for their usage.
10. Get your own CD/USB with music for the dance.
11. No audio cassettes will be allowed.
Round II: Footloose: (On the spot adaptation)
1. The music will keep changing, you will have to adapt to the beat.
2. Organizers will provide music on the spot.
3. There will have to be at least four dancers on stage at all times.
4. Time limit: Max: 3 min, Min: 1min (Left to the discretion of the organizers).
5. Weightage will be given for adaptation to change of music and pace of beat, coordination and choreography.
6. No props allowed
Prelims : March 14th
Finals : March 15th
Description
Information Systems Association, BITS-Pilani Hyderabad Campus presents Googled, an event where none but only Google can be your saviour. So, if you know how to tame the beast, you are in for a roll!
Googled shall comprise two rounds as follows:
Qualifiers: Participating teams will have to find answers to a set of simple yet tricky, objective type questions using their googling skills.
Finale: The challenge becomes tougher, trickier and all the more nerve wrecking. A sort of on-stage round wherein the selected teams from the previous round compete against each other to score a maximum, in order to ace the event.
Event Rules
1. On-spot registrations. Register in teams of two (strictly).
2. A very nominal fee of INR 20/- per participant shall be charged for registration.
3. Top 6 teams from the qualifier round battle it out in the final round.
4. Rules for each round are intended to hold an element of surprise. Hence, will be revealed at the venue itself.
5. Get your own stationery.
6. No electronic gadgets of any type allowed in the venue.
7. In any case of discrepancy, the decision of the organisers will be final and binding.
Judging Criteria
In general, weightage will be given to the response time and correctness of the answer. Rules specific to each round will be revealed at the venue.
Date: March 13 & 14 (Qualifiers)
Venue: IPCs, BITS-Pilani Hyderabad Campus
Prize money worth INR 4,000/- (tentative)
Contact:
Santhosh Kumar Reddy: +91-9705254514
Garvit Kandpal: +91-9705107105


Basic
[[item]]
Overflowing
[[item]]
Bottom-left Aligned
[[item]]
Top-right Aligned
[[item]]
Alternate Content


Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder
Placeholder


Comments
-
Greg Hurrell
I think the automatic aspect of it is worth implementing, but there is one thing I wanted to respond to in your comment:
The hot keys will continue to work even when the screensaver is active, so you do already have a means of pausing your music without unlocking the screen. Note that if the password dialog is showing you'll have to dimiss it first with the Escape key (or just wait for it to go away) because otherwise it will capture the keyboard and prevent the hot keys from getting through.
-
ckd
The hot keys used to work, but there was a security fix some time ago which prevented keystrokes from being passed through the screen saver and they no longer work even if you dismiss the password dialog and hit the key repeatedly.
Add a comment
Comments are now closed for this issue.


Looking for someone?
Need phone number or address?
BIZZ
CARDS.
Who or What are you looking for?
Auto Repair
.
arrow_forward_ios


v{{ omnidb_short_version }}
Release notes:
Psql like console tab allowing users to run commands and keep track of past executions
Export query results to CSV or XLSX
Interface allowing users to define shortcuts for several actions, such as run query, cancel query, explain, tab management and others
Execute selected query in query tab
Separation between server hosting OmniDB and websocket server (to handle query, console and debugging tabs), enhancing performance for multiple users
JSON and JSONB types fetched with single-quotes, following the JSON standard
Enhanced performance of database tree when rendering thousands of nodes
OmniDB sets application_name for all PostgreSQL connections
Welcome tab with details about current version


Run the SQL statement to the right.
The CEILING function works similarly to the FLOOR function, except it returns the next higher integer value.
You should see a result set in the lower right panel.


Biography
Yongfeng Gu is a senior software engineer at Ant Group, Hangzhou, China (2021-now).
Ant group aims to build the future digital infrastructure of services, and thereby bring about constant and incremental changes that are beneficial to the world. The famous products include Alipay, OceanBase, and AntChain.
Before that, he obtained a Ph.D. degree in computer science at the School of Computer Science, Wuhan University, China in 2021.
He was also a member of CSTAR - Centre of Software Testing, Analysis, and Reliability (2016 - 2021).
His current research directions include intelligent optimization, evolutionary algorithms, and multi-objective optimization. Any cooperation is warmly welcomed,
please contact me at LinkedIn,
ResearchGate,
CSDN,
and GitHub.
Projects
1. Optimization and Evolutionary Algorithms
-
Yongfeng Gu, Yuxuan Zhou, Zhilei Chen, Hao Ding, Fan Jia, Shiping Wang, Hua Wu, and Jun Zhou.
Exploring the Impact of Grouping Strategies on Cooperative Co-evolutionary Algorithms for Solving the Advertising Budget Allocation Problem.
IEEE International Conference on Software Security and Reliability (QRS 2022) [Link]
-
Yongfeng Gu, Hao Ding, Kecai Gu, Xiaoguang Huang, Hua Wu, and Jun Zhou.
A Comparison Analysis of Constraint Handling Techniques on Rule Selection Problem in Credit Risk Assessment: An Industrial View.
IEEE International Conference on Software Security and Reliability (QRS 2022) [Link]
-
Yongfeng Gu, Yue Ning, Kecai Gu, Daohong Jian, Zhou Xu, Hua Wu, and Jun Zhou.
A Self-adaptive Indicator Selection Approach for Solving Credit Risk Assessment.
Computers, Software & Applications in an Uncertain World (COMPSAC 2022) [Link]
-
Yongfeng Gu, Hao Ding, Kecai Gu, Runsheng Gan, Xiaoguang Huang, Yanming Fang, Zhigang Hua, Hua Wu, Jifeng Xuan, and Jun Zhou.
Heuristic Strategies for Solving the Combinatorial Optimization Problem in Real-World Credit Risk Assessment.
Annual Conference on Genetic and Evolutionary Computation (GECCO 2022) [Link]
-
Yongfeng Gu, Hao Ding, Hua Wu, and Jun Zhou.
Opposite Learning and Multi-Migrating Strategy-Based Self-Organizing Migrating Algorithm with the Convergence Monitoring Mechanism.
Annual Conference on Genetic and Evolutionary Computation (GECCO 2022 Competition) [Link]
-
Hao Ding, Yongfeng Gu, Hua Wu, and Jun Zhou.
NL-SOMA-CLP for Real Parameter Single Objective Bound Constrained Optimization.
Annual Conference on Genetic and Evolutionary Computation (GECCO 2022 Competition) [Link]
2. Software Crash Analysis
Software crash refers to an unexpected termination of software systems.
Developers spend much time and effort in dealing with software crashes.
In this project, we mainly focus on crash reproduction, localization, repair, and other relative tasks.
-
Yongfeng Gu, Ping Ma, Xiangyang Jia, He Jiang, and Jifeng Xuan.
Progress on software crash research.
SCIENTIA SINICA Informationis, 2019, 49(11): 1383-1398 [Link]
-
Yongfeng Gu, Jifeng Xuan, Hongyu Zhang, Lanxin Zhang, Qingna Fan, Xiaoyuan Xie, and Tieyun Qian.
Does the fault reside in a stack trace? Assisting crash localization by predicting crashing fault residence.
Journal of Systems and Software, 2019, 148(1): 88-104 [Link]
-
Yongfeng Gu, Jifeng Xuan, and Tieyun Qian.
Automatic reproducible crash detection.
International Conference on Software Analysis, Testing and Evolution (SATE 2016) [Link]
3. System Performance Analysis
Modern software systems often provide tons of configuration options to extend flexibility and functionality.
However, the daily-increasing number of options brings challenges in two vital tasks: configuration-related
bug detection and system performance optimization. In this project, we tried to explore solutions to solve or
assist with the above tasks.
-
Yongfeng Gu, Yuntianyi Chen, Xiangyang Jia, and Jifeng Xuan.
Multi-Objective Configuration Sampling for Performance Ranking in Configurable Systems.
Asian-Pacific Software Engineering Conference (APSEC 2019) [Link]
-
Yuntianyi Chen, Yongfeng Gu, Lulu He, and Jifeng Xuan.
Regression Models for Performance Ranking of Configurable Systems: A Comparative Study.
International Workshop on SOFL + MSVL for Reliability and Security (SOFL+MSVL 2019) [Link]
-
Jifeng Xuan, Yongfeng Gu, Zhilei Ren, Xiangyang Jia, and Qingna Fan.
Genetic Configuration Sampling: Learning a Sampling Strategy for Fault Detection of Configurable Systems.
Annual Conference on Genetic and Evolutionary Computation (GECCO 2018) [Link]
Awards
-
Huawei Scholarship at Wuhan University 2020.
-
Famous Teacher Scholarship at Wuhan University 2019.
-
Distinguished Doctor Forum in Annual Symposium of Wuhan Computer Software Engineering Federation
Nomination Award in 2019.
-
Distinguished Doctor Forum in School of Computer Science, Wuhan University
First-class Award in 2018. Third-class Award in 2019.
-
Academic Scholarship, Wuhan University
First-class Award in 2015, 2016. Second-class Award in 2018, 2019.
-
SKLSE Cup Website Design Competition, Wuhan University
Second-class Award in 2016.
-
Software Prototype Competition, NASAC 2016
Third-class Award in 2016.
-
MoocTest Cup Developers Testing Invitational Tournament, NJSD 2017
Second-class Award in 2016.
-
National Encouragement Scholarship in Hubei University 2012.


?mmm
0
1
2
3
4
5
6
7
8
9
10
=“yo.uc
?
?
?
?
i
cm
copyright
reserved
Botanical
Garden
X-s-s-
THE
NEW
YORK
BOTANICAL
GARDEN
Plants
of
Hispaniola
Dominican
Republic
No.
18^85
Hydrocotyle
hirsuta
Sw.
Det.
A,H,Liogier,
1972
Herbaceous,
cespitosej
flowers
green;
in
wet
placer:on
roadside,
a
Horma
Arriba,
San.Jose
de
^coa,
Alt*
1800-2000
m#
fiiof
Alain
H.
Liogier
^
^ay*
1972
3
Supported
by
funds
from
the
National
Science^o^ndatTon!
01501085
Legend -
Level of confidence that token is an accurately-transcribed word
extremely low
very low
low
undetermined
medium
high
very high


Cricket Loving Pakistani Couple Ditch Wedding Night to Watch Match, ICC Gushes Over the Picture
New Delhi (Sputnik): Dressed in wedding attire, eyes transfixed on the television screen, the picture of the newly-wedded couple shows how cricket-mania has gripped both India and Pakistan, as the sport is more than just cricket to its fandom.
The picture of the Pakistani couple, shared by the official Twitter handle of the International Cricket Council (ICC), has created quite a stir among cricket fans who couldn't agree more with the pair, who called themselves "die-hard cricket fans" in the picture submitted to the ICC.
Hasan Tasleem, who resides in North America, submitted their photograph to the ICC along with a note that read, “As a die-hard cricket fan, I want to submit a photo from my wedding this past weekend”.
“Even though it was my wedding night, I wasn’t going to miss the game,” he added.
The world cricket’s governing body with 9.9 million followers was also amazed with the couple’s dedication to cricket and tweeted the picture, calling it #CoupleGoals.
The picture received an overwhelming response from cricketing buffs, who recounted their own such experiences of cricket match dates coinciding with the birth of a child, while others shared pictures of the match being telecasted on screens during their weddings.
On the other hand, many disagreed with Tasleem and joked that he shouldn’t have missed his wedding night for the game.


This is what it looks like.
From here, we can try and pick out a pair with a strong correlation to see if the relationship is appropriate for pairs trading.
In this case, the matrix is small enough for us to eyeball the best pair. But let’s automate this part too, in case we have to deal with a much larger correlation matrix down the road.
cor = stocks_df.corr()
In the code above, we start by saving the correlation table to a variable. We then want the largest number in the correlation matrix.
We first want to remove any perfect correlations which are denoted by 1. This is simply the coefficient of the stock to itself, not very useful. We can change any instances of 1 to 0.
cor[cor==1] = 0
Now we can determine which coefficient is the largest. The idxmax function will return the largest, except it will do so for each column. If we stack the DataFrame first, it will return only the pair with the strongest correlation.
cor.stack().idxmax()
In this case, the code returned a tuple containing BAC and JPM.
Now that we know that BAC and JPM have the strongest correlation in our table, let’s quickly plot a chart to visually confirm it.
%matplotlib inline
bac_jpm = pd.concat([stocks_df.BAC, stocks_df.JPM], axis=1)
bac_jpm.plot()
We’ve created another DataFrame with only the BAC and JPM data. We then used the plot() function from Pandas to display a chart in our Jupyter notebook.
Visually, it looks like a good correlation, just as our correlation coefficient had suggested.
But a good correlation alone does not imply that the two bank stocks are cointegrated.
Now, a concept called cointegration is going to be introduced.
Correlation and cointegration are two very different things. We are only using correlation to try and narrow down our focus.
There could be a scenario where one stock consistently outperforms another. In that case, the two stocks will still have a fairly high correlation, but the synthetic pair will not be stationary or cointegrated.
Let’s dig a little deeper to try and find out if this pair is suitable for a cointegration strategy.
The next step is to calculate the spread between BAC and JPM and plot it. After all, that is what we will be trading. If the two stocks are cointegrated, the chart should have some consistency in the variance from its mean.
spread = stocks_df.BAC - stocks_df.JPM
spread.cumsum().plot()
To calculate the spread, we need to subtract one stock from another. This is because we are using percent change data. If we were using closing prices, we would have divided one by the other to derive the spread.
The chart above does not show consistency in variance.
There is enough evidence here that the spread is mean-reverting between BAC and JPM. There was a larger than usual dip in July, but overall, the spread seems to revert to the 0 level continuously. This could be a good candidate for a cointegration strategy.
This should have given an intuitive idea of cointegration. Now, we are going to look at rigorous statistical methods that are employed to find the cointegration between pairs.
Read more: statistical methods to find cointegration
The code below will use the statsmodel python library.
The first statistical method we explained was the ADF test. We can use the `adfuller` method from the statsmodels library in order to run this.
The second method we explained is the Engle-Granger two-step method. We can use the coint
method from statsmodels library in order to run this.
We will start by importing both methods.
from statsmodels.tsa.stattools import coint, adfuller
We will run our spread Dataframe through the adfuller method. This will let us know if our data is stationary or not.
Recall that if two assets combined produce a stationary time series, then those two assets are considered to be cointegrated.
But before running the test, we need to clean up our data. The statsmodels library currently does not handle missing data.
We can use the dropna function from Pandas to delete any empty rows.
spread.dropna(inplace=True)
Next, we will save the results from the adfuller method to a variable called adf_results.
adf_results = adfuller(spread)
The output might seem a bit confusing, so the next part of the code cleans it up a bit so it is easier to read.
print(f'ADF Test Statistic: {adf_results[0]}')
print(f'PValue: {adf_results[1]}')
print(f'Number of lags used: {adf_results[2]}')
print(f'Number of observations: {adf_results[3]}')
print('Critical Values:')
for k,v in adf_results[4].items():
print(f'{k}: {v}')
And here are our results.
The first thing we will look at is the P-Value. It should be below a certain threshold. Some discretion can be used to determine exactly what that threshold is.
Commonly used thresholds are either 5% or 1% (0.05 or 0.01). In this case, the P-Value falls well below the threshold.
Next, we will look at the test statistic which is roughly -9.9. We can compare this to the Critical Values provided by the test.
Since our test statistic is less than the 1% critical value of -3.5, we can assume that our data is stationary with 99% certainty.
In other words, this test tells us that we have found a cointegrated pair based on the data we have supplied.
The next test we will run is the `coint` test from the statsmodels library.
In the last test, we used the spread DataFrame that we created by subtracting percentage change data from one stock to another.
This test requires the percentage change data from both stocks. We have this available already in our `stocks_df` DataFrame.
Once again, we will start by removing any empty rows. Then we will save the results from the test to a variable.
stocks_df.dropna(inplace=True)
coint_results = coint(stocks_df.BAC, stocks_df.JPM)
We can then output the results to the screen.
print(f'T-statistic of unit-root test on residuals {coint_results[0]}')
print(f'PValue: {coint_results[1]}')
print(f'Critical Values: {coint_results[2]}')
In this test, we are only focused on the P-Value. Just like the Augmented Dickey-Fuller test, if the value is below a certain threshold, we can consider the data to be cointegrated.
The P-Value, in this case, is well below 0.01 which lets us know that our two stocks are cointegrated.
We now have both visual confirmation from our graphs and statistical confirmation that this strategy is suitable for a cointegration strategy.
However, there is one other important consideration. Recall that the ADF test showed us the number of observations was 98.
This means we tested 98 trading days worth of data. This is a rather small sample.
It may very well be that the pair shows cointegration during some periods and not others. We can run further tests on a larger sample to gain more insight.
We can also customize our data to an extent.
For example, let’s say it is determined that this spread moves well beyond the norm during earnings reports, and it is not profitable to trade during that time. So we can avoid these periods of an anomaly.
Here is a summary of the things we have covered so far in Trading Systems
Now, using what we have discussed so far, we can successfully find pairs that can be traded. But, there is a vital part of the quantitative that is yet to be discussed. It is the back-testing of the strategy we have made.


More News
‘Hate is learned’: Tracing the history of anti-Asian violence in America
By Mike Cerre, PBS
Let’s hear the truth, for once, from former Trump officials
By The Editorial Board, Boston Globe
Capitol Police union warns of potential exodus after latest attack, urges security increases
By Allan Smith and Frank Thorp V, NBC News


A collection of Header GNDescr objects.
When an EndPoint
requires the ability to upload files, this object tells the internal
Upload-Handler how to upload the files.
IMPORTANT: Upload request must be called as a
POST
,PUT
, orDELETE
method.
dffrnt.api
The system will handle the middleware required to process an upload request, so long as the request-method definition includes this Files object.
During an upload, dffrnt.api
goes through 3 phases:
Files.field
you've defined
contains any filenames.Streams
, and gather any meta-data
. Only
first Files.max(n)
files--if set--will be processed.path
/body
params and meta-data
to the Files.dest
Files.name
callbacks
to determine where, and under what name the file(s) should
be saved.Files.field
param, and a private location
param will be set on the
requests body
which is then passed to your request-method Query
function so the upload
can be logged in your database or whatever post-processing you need done.Uploads are always stored in <project_root>/storage/*
; however, this object
allows you to define which folders within <project_root>/storage/*
the files will go to, how the files will be named, etc.
The name
of the GNParam that represents the <file>
element or files list in the request.
index.html:
<form method="POST" action="...">
<input type="file" name="upload" />
</form>
config/endpoints.cfg.js:
{ // curl -X POST https://host/point -d "username=coolguy" ...
field: 'upload',
} // File is saved to <project_root>/storage/coolguy/*
An optional maximum amount of files that can be pushed to this request. A client can still request
more than the max if the Browser Application allows for it, but the internal uploader will only
upload the first max(n)
files that show up in the filename list.
An optional callback
you can define to determine--based on the parameters it sets--where
in the <project_root>/storage/
folder the file(s) will be saved.
If not defined, any files sent will be saved as <project_root>/storage/<filename>
.
{ // curl -X POST https://host/point -d "username=coolguy" ...
dest(prm, bdy, file) { return bdy.username; },
} // File is saved to <project_root>/storage/coolguy/*
The path-params sent with the request.
The body-params sent with the request.
An object of meta-data retrieved from the uploaded file(s).
An optional callback
you can define to determine--based on the parameters it sets--what
name(s) the file(s) will be saved under.
If not defined, any files sent will be saved as <project_root>/storage(/<destination>)/<originalName>
.
{ // curl -X POST https://host/point/12345" ...
dest(prm, bdy, file) { return 'profile_pics'; },
name(prm, bdy, file) { return prm.user_id; }, // <---
} // File is saved as <project_root>/storage/profile_pics/12345.jpg
The path-params sent with the request.
The body-params sent with the request.
An object of meta-data retrieved from the uploaded file(s).
A collection of Query Examples.
A collection of GNParam objects (for <a href="../classes/_dffrnt_confs.routeau.html">RouteAU_).
Config properties a Route's Documentation.


| Order Number | Date/Time | Patient's Name | Medication | status |
|---|---|---|---|---|
| #443543231354 | 16:55 - 02.07.2017 | John Doe | orthomol immun 90g | Delivered Driver on the way |
| #443543231354 | 16:55 - 02.07.2017 | John Doe | orthomol immun 90g | Delivered Driver on the way |
| #443543231354 | 16:55 - 02.07.2017 | John Doe | orthomol immun 90g | Delivered Driver on the way |


When is War of the Worlds on and who's in it?
HG Wells’ The War of the Worlds is a tale that’s been told plenty of times before, from a radio broadcast that was so believable the legend has it audiences ran out into the streets in a panic to a major blockbuster starring Tom Cruise.
The BBC are next in line to take a stab at telling the action-packed tale of alien invasions and destruction.
When is War of the Worlds on and who’s in the cast?
Here’s what you need to know…
What time is War of the Worlds on?
The first episode of BBC’s The War of the Worlds airs tonight at 9pm on BBC One.
There will be three one-hour long episodes, with the next episode being aired next week at the same time.
There’s been quite the build-up for the show – with it facing delays which caused it to miss its original scheduled release date of late 2018.
Advertisement Advertisement
Who’s in War of the Worlds?
The BBC’s adaptation will be a more faithful adaption of the novel, taking place in Britain at the turn of the twentieth century, unlike the modern-day setting of 2005’s movie with Tom Cruise.
Poldark’s Eleanor Tomlinson – who nearly sacrificed everything for the show – and Prometheus’ Rafe Spall play the central couple Amy and George, who are busy defying the prejudices of their society as they start a life together when the aliens invade.
Also joining the cast is Robert Carlyle, best known for Trainspotting and The Full Monty, who’ll be playing an astronomer and Sherlock’s Rupert Graves playing George’s brother.
Keeping the authenticity of the original tale was important to the Beeb.
‘It’s fantastic to have Rafe and Eleanor leading such a brilliant cast of British acting talent in the BBC’s faithful adaptation of H.G. Wells’ legendary story,’ said Tommy Bulfin, BBC commissioning editor, in a statement.


@(apps: List[org.ubicollab.ubibazaar.core.App]) @ubibazaar("App catalog") {
UbiBazaar is an app store for the Internet of Things, a place where IoT app developers publish their apps and where users can easily find them and install them directly to their devices.


| predict.gam {mgcv} | R Documentation |
Takes a fitted gam
object produced by gam()
and produces predictions given a new set of values for the model covariates
or the original values used for the model fit. Predictions can be accompanied
by standard errors, based on the posterior distribution of the model
coefficients. The routine can optionally return the matrix by which the model
coefficients must be pre-multiplied in order to yield the values of the linear predictor at
the supplied covariate values: this is useful for obtaining credible regions
for quantities derived from the model (e.g. derivatives of smooths), and for lookup table prediction outside
R
(see example code below).
## S3 method for class 'gam' predict(object,newdata,type="link",se.fit=FALSE,terms=NULL, exclude=NULL,block.size=NULL,newdata.guaranteed=FALSE, na.action=na.pass,unconditional=FALSE,...)
object |
a fitted |
newdata |
A data frame or list containing the values of the model covariates at which predictions
are required. If this is not provided then predictions corresponding to the
original data are returned. If |
type |
When this has the value |
se.fit |
when this is TRUE (not default) standard error estimates are returned for each prediction. |
terms |
if |
exclude |
if |
block.size |
maximum number of predictions to process per call to underlying
code: larger is quicker, but more memory intensive. Set to < 1 to use total number
of predictions as this. If |
newdata.guaranteed |
Set to |
na.action |
what to do about |
unconditional |
if |
... |
other arguments. |
The standard errors produced by predict.gam
are based on the
Bayesian posterior covariance matrix of the parameters Vp
in the fitted
gam object.
When predicting from models with link{linear.functional.terms}
then there are two possibilities. If the summation convention is to be used in prediction, as it was in fitting, then newdata
should be a list, with named matrix arguments corresponding to any variables that were matrices in fitting. Alternatively one might choose to simply evaluate the constitutent smooths at particular values in which case arguments that were matrices can be replaced by vectors (and newdata
can be a dataframe). See link{linear.functional.terms}
for example code.
To facilitate plotting with termplot
, if object
possesses
an attribute "para.only"
and type=="terms"
then only parametric
terms of order 1 are returned (i.e. those that termplot
can handle).
Note that, in common with other prediction functions, any offset supplied to
gam
as an argument is always ignored when predicting, unlike
offsets specified in the gam model formula.
See the examples for how to use the lpmatrix
for obtaining credible
regions for quantities derived from the model.
If type=="lpmatrix"
then a matrix is returned which will
give a vector of linear predictor values (minus any offest) at the supplied covariate
values, when applied to the model coefficient vector.
Otherwise, if se.fit
is TRUE
then a 2 item list is returned with items (both arrays) fit
and se.fit
containing predictions and associated standard error estimates, otherwise an
array of predictions is returned. The dimensions of the returned arrays depends on whether
type
is "terms"
or not: if it is then the array is 2 dimensional with each
term in the linear predictor separate, otherwise the array is 1 dimensional and contains the
linear predictor/predicted values (or corresponding s.e.s). The linear predictor returned termwise will
not include the offset or the intercept.
newdata
can be a data frame, list or model.frame: if it's a model frame
then all variables must be supplied.
Predictions are likely to be incorrect if data dependent transformations of the covariates are used within calls to smooths. See examples.
Note that the behaviour of this function is not identical to
predict.gam()
in Splus.
type=="terms"
does not exactly match what predict.lm
does for
parametric model components.
Simon N. Wood<EMAIL_ADDRESS>The design is inspired by the S function of the same name described in Chambers and Hastie (1993) (but is not a clone).
Chambers and Hastie (1993) Statistical Models in S. Chapman & Hall.
Marra, G and S.N. Wood (2012) Coverage Properties of Confidence Intervals for Generalized Additive Model Components. Scandinavian Journal of Statistics, 39(1), 53-74.
Wood S.N. (2006b) Generalized Additive Models: An Introduction with R. Chapman and Hall/CRC Press.
library(mgcv) n<-200 sig <- 2 dat <- gamSim(1,n=n,scale=sig) b<-gam(y~s(x0)+s(I(x1^2))+s(x2)+offset(x3),data=dat) newd <- data.frame(x0=(0:30)/30,x1=(0:30)/30,x2=(0:30)/30,x3=(0:30)/30) pred <- predict.gam(b,newd) pred0 <- predict(b,newd,exclude="s(x0)") ## prediction excluding a term ############################################# ## difference between "terms" and "iterms" ############################################# nd2 <- data.frame(x0=c(.25,.5),x1=c(.25,.5),x2=c(.25,.5),x3=c(.25,.5)) predict(b,nd2,type="terms",se=TRUE) predict(b,nd2,type="iterms",se=TRUE) ######################################################### ## now get variance of sum of predictions using lpmatrix ######################################################### Xp <- predict(b,newd,type="lpmatrix") ## Xp %*% coef(b) yields vector of predictions a <- rep(1,31) Xs <- t(a) %*% Xp ## Xs %*% coef(b) gives sum of predictions var.sum <- Xs %*% b$Vp %*% t(Xs) ############################################################# ## Now get the variance of non-linear function of predictions ## by simulation from posterior distribution of the params ############################################################# rmvn <- function(n,mu,sig) { ## MVN random deviates L <- mroot(sig);m <- ncol(L); t(mu + L%*%matrix(rnorm(m*n),m,n)) } br <- rmvn(1000,coef(b),b$Vp) ## 1000 replicate param. vectors res <- rep(0,1000) for (i in 1:1000) { pr <- Xp %*% br[i,] ## replicate predictions res[i] <- sum(log(abs(pr))) ## example non-linear function } mean(res);var(res) ## loop is replace-able by following .... res <- colSums(log(abs(Xp %*% t(br)))) ################################################################## # illustration of unsafe scale dependent transforms in smooths.... ################################################################## b0 <- gam(y~s(x0)+s(x1)+s(x2)+x3,data=dat) ## safe b1 <- gam(y~s(x0)+s(I(x1/2))+s(x2)+scale(x3),data=dat) ## safe b2 <- gam(y~s(x0)+s(scale(x1))+s(x2)+scale(x3),data=dat) ## unsafe pd <- dat; pd$x1 <- pd$x1/2; pd$x3 <- pd$x3/2 par(mfrow=c(1,2)) plot(predict(b0,pd),predict(b1,pd),main="b0 and b1 predictions match") abline(0,1,col=2) plot(predict(b0,pd),predict(b2,pd),main="b2 unsafe, doesn't match") abline(0,1,col=2) ################################################################## ## The following shows how to use use an "lpmatrix" as a lookup ## table for approximate prediction. The idea is to create ## approximate prediction matrix rows by appropriate linear ## interpolation of an existing prediction matrix. The additivity ## of a GAM makes this possible. ## There is no reason to ever do this in R, but the following ## code provides a useful template for predicting from a fitted ## gam *outside* R: all that is needed is the coefficient vector ## and the prediction matrix. Use larger `Xp'/ smaller `dx' and/or ## higher order interpolation for higher accuracy. ################################################################### xn <- c(.341,.122,.476,.981) ## want prediction at these values x0 <- 1 ## intercept column dx <- 1/30 ## covariate spacing in `newd' for (j in 0:2) { ## loop through smooth terms cols <- 1+j*9 +1:9 ## relevant cols of Xp i <- floor(xn[j+1]*30) ## find relevant rows of Xp w1 <- (xn[j+1]-i*dx)/dx ## interpolation weights ## find approx. predict matrix row portion, by interpolation x0 <- c(x0,Xp[i+2,cols]*w1 + Xp[i+1,cols]*(1-w1)) } dim(x0)<-c(1,28) fv <- x0%*%coef(b) + xn[4];fv ## evaluate and add offset se <- sqrt(x0%*%b$Vp%*%t(x0));se ## get standard error ## compare to normal prediction predict(b,newdata=data.frame(x0=xn[1],x1=xn[2], x2=xn[3],x3=xn[4]),se=TRUE) #################################################################### ## Differentiating the smooths in a model (with CIs for derivatives) #################################################################### ## simulate data and fit model... dat <- gamSim(1,n=300,scale=sig) b<-gam(y~s(x0)+s(x1)+s(x2)+s(x3),data=dat) plot(b,pages=1) ## now evaluate derivatives of smooths with associated standard ## errors, by finite differencing... x.mesh <- seq(0,1,length=200) ## where to evaluate derivatives newd <- data.frame(x0 = x.mesh,x1 = x.mesh, x2=x.mesh,x3=x.mesh) X0 <- predict(b,newd,type="lpmatrix") eps <- 1e-7 ## finite difference interval x.mesh <- x.mesh + eps ## shift the evaluation mesh newd <- data.frame(x0 = x.mesh,x1 = x.mesh, x2=x.mesh,x3=x.mesh) X1 <- predict(b,newd,type="lpmatrix") Xp <- (X1-X0)/eps ## maps coefficients to (fd approx.) derivatives colnames(Xp) ## can check which cols relate to which smooth par(mfrow=c(2,2)) for (i in 1:4) { ## plot derivatives and corresponding CIs Xi <- Xp*0 Xi[,(i-1)*9+1:9+1] <- Xp[,(i-1)*9+1:9+1] ## Xi%*%coef(b) = smooth deriv i df <- Xi%*%coef(b) ## ith smooth derivative df.sd <- rowSums(Xi%*%b$Vp*Xi)^.5 ## cheap diag(Xi%*%b$Vp%*%t(Xi))^.5 plot(x.mesh,df,type="l",ylim=range(c(df+2*df.sd,df-2*df.sd))) lines(x.mesh,df+2*df.sd,lty=2);lines(x.mesh,df-2*df.sd,lty=2) }


Ruth's Talks
Journey Through Web APIs Space & Time - FOWA '15
Journey Through Web APIs Space & Time - Sept/Oct '15
Journey Through Space & Time - JS Oxford July '15
Journey Through Space & Time - Responsive Day Out June '15 & FEL April '15
Web vs Native - NorDevCon '15
Outside The Web API Box - Bath Digital Festival '14
Web API's - O2 Head Office '14
Outside The API Box - FOWA London '14
Outside The API Box - Bacon Conf '14
Browsers At Play - State of the Browser '14
Make Your Browser Dance: London JS, Spring '14' & Breaking Borders, Spring '14


Dev Once, Deploy Anywhere.
Senior Software Engineer.
Senior Software Engineer
During my work at Fortune 500 companies, I've also utilized the Platform as a Service (PaaS) tool Docker. Creating Dockerfile's (specifying configuration), Docker volumes (sharing data between containers or even the host), and Docker networks (virtual networking between containers as well as host).
Docker, the Docker logo and any related marks are trademarks of Docker, Inc.


Quick Information
In order to meet the demands of high performance computing (HPC) researchers, large-scale computational and storage machines require many staff members who design, install, and maintain these systems. These HPC systems professionals include system engineers, system administrators, network administrators, storage administrators and operations staff all who face problems that are specific to high performance systems.
The Systems Professionals Workshop intends to be a platform for discussing the unique challenges that come from supporting large-scale, high performance systems. We are soliciting submissions that speak directly to the state of the practice of standing up and operating high performance systems with an emphasis on solutions that can be implemented by systems staff at other institutions.
After a successful first workshop last year, we are planning the 2017 version. The workshop will be Monday, November 13, 2017 from 9:00 AM to 5:30 PM.
Keynote Speaker
Greg Kurtzer, Singularity
Singularity is a container technology which is widely supported by HPC centers and service providers because it facilitates extreme mobility of compute via verifiable, trusted container images. This talk will cover a high level view of Singularity, usage and deployment information (including security, administration and capabilities).
Greg Kurtzer is the CEO and Founder of SingularityWare, HPC Architect at Lawrence Berkeley National Laboratory and creator of Centos Linux and Warewulf.
Call for Papers
Supercomputing systems present complex challenges to personnel who design, deploy and maintain these systems. Standing up these systems and keeping them running require novel solutions that are unique to high performance computing. The success of any supercomputing center depends on stable and reliable systems, and HPC Systems Professionals are crucial to that success.
The Second Annual HPC Systems Professionals Workshop will bring together systems administrators, systems architects, and systems analysts in order to share best practices, discuss cutting-edge technologies, and advance the state-of-the-practice for HPC systems. Submissions are encouraged that discuss all aspects of HPC systems design, implementation, maintenance, and security.
Download our Call for Papers Flyer. Submissions are via EasyChair.
Schedule
| Start | End | Description |
|---|---|---|
| 9:00 AM | 9:20 AM | Welcome |
| 9:20 AM | 9:40 AM | Automated System Health and Performance Benchmarking Platform: High Performance Computing Test Harness with Jenkin |
| 9:40 AM | 10:00 AM | Improving the Start-Up Time of Python Applications on Large Scale HPC Systems |
| 10:00 AM | 10:30 AM | Break |
| 10:30 AM | 11:30 AM | Filesystem Panel |
| 11:30 AM | 11:50 AM | Panel Q&A |
| 11:50 AM | 12:10 PM | A Summary of the Workshop on Training and Sustaining Research Computing Systems Professionals - A Path to a Profession |
| 12:10 PM | 12:30 PM | Linux Clusters Institute Workshops: Building the HPC and Research Computing Systems Professionals Workforce |
| 12:30 PM | 1:30 PM | Lunch |
| 1:30 PM | 2:20 PM | Singularity: Greg Kurtzer |
| 2:20 PM | 2:40 PM | There and Back Again: A Case Study of Configuration Management of HPC |
| 2:40 PM | 3:00 PM | Lessons from the IBM Blue Gene Series of Supercomputers |
| 3:00 PM | 3:30 PM | Break |
| 3:30 PM | 4:00 PM | Lightning Talks |
| 4:00 PM | 5:00 PM | Open Discusssion |
| 5:00 PM | 5:30 PM | SIGHPC-SYSPROS Chapter Meeting |
Topics of Interest
Here are some topics of interest for this group. Note that these are here to indicate direction, not to disallow other related topics.
- Cluster, configuration, or software management
- Performance tuning/Benchmarking
- Resource manager and job scheduler configuration
- Monitoring/Mean-time-to-failure/ROI/Resource utilization
- Virtualization/Clouds
- Designing and troubleshooting HPC interconnects
- Designing and maintaining HPC storage solutions
- Cybersecurity and data protection
- Cluster storage
Example paper ideas might be:
- Best practices for job scheduler configuration
- Advantages of cluster automation
- Managing software on HPC clusters
Calendar
| Event | Date |
|---|---|
| Workshop Proposal Submission | February 5, 2017 |
| Paper Submission Deadline | September 10, 2017 |
| Paper Acceptance Notifications | September 30, 2017 |
| Lightning Talk Deadline | October 27, 2017 |
| Camera ready papers | October 6, 2017 |
| Workshop | November 13, 2017 (9:00 AM to 5:30 PM) |
Organizing Committee
| Position | Name | Affiliation |
|---|---|---|
| Chair | Randy Herban | Microsoft |
| Vice Chair | Jenett Tillotson | Indiana University |
| Program Committee Chair | Alex Younts | Purdue University |
| Organizing Committee | William Scullin | Argonne |
| Isaac Traxler | LSU | |
| David Clifton | Ansys | |
| Paul Peltz | Los Alamos |
Program Committee
| Name | Affiliation |
|---|---|
| Siddharth Bhatia | BITS Pilani |
| John Blaas | CU Boulder |
| Brett Bode | University of Illinois |
| Matt Ezell | Oak Ridge National Laboratory |
| Sharan Kalwani | Michigan State |
| David King | NCSA |
| Honwai Leong | NCSA |
| Scott McMillan | NVidia |
| Jeff Raymond | University of Pittsburgh |
| Mike Requa | Microsoft |
| Randy Schauer | Raytheon Company |
| Andy Sydelko | Purdue |
| Jenett Tillotson | Indiana University |
Contact Information
Please send email to hpcsyspros.
Links
- HPC Sysadmin Mailing List - you should join!


pyrite adsorption surface carbon coal atoms water ideal {border-style molecule px;} surface. #ffffff;} atom bond energy Figure Table different charge Phys. density doped iron ortho-position Chen China sulfur Adsorption P.X.; adsorbed model results shown Mulliken covalent defects meta-position population sites study centre, doping hydrophilicity hydrophobicity px; {font-family Fe–O Rev. atoms. band doping-position, font-size formed gap increased interaction molecules---t_Table negative pyrite, structure substitution surface, value ./PhysRevB.. Coal DFT Liu University bonding defect doping-position double; electronic gradually indicated mechanism molecules properties single strength substituted surfaces ./j.apsusc... Pyrite Sci. Study atom, atoms, border-color border-width distance impurity influence lattice means meta-position. showed solid; weakening {font-style {font-weight App. Atomic Charge/e Density Label MCP Meanwhile, Quantum Status Surf. Technology Thesis ads atom. away bold bulk close courier; doping-position; electron electrons em; lower orbital ortho-position; overall positions process pt;} region" represents surface; transfer undoped used


Ecology Pollution Pollution and Over-Population, the Modern Evils Over-population, pollution, global warming, ecology. We hear those often but was is really going on? What is actually over-population or pollution? Should we be concerned? My answer: definitely Yes! And here is why.


{%block title %} {%endblock%}
{% include 'navbar.html' %}
Hello, Djando + Bootstrap + MySQL!
This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.