class: center, middle # IEMS 5780
Building and Deploying Scalable
Machine Learning Services ### Lecture 12 - Deploying & Scaling Machine Learning Applications #### Albert Au Yeung
29nd November, 2019 --- class: center, middle # Scaling Network Applications --- # Scaling Network Applications - What does **scalable** mean? We need to understand what is **scalability** before we can build something that is scalable. - Is **scalable** the same as: - High availability (always available to the users)? - High performance (handle every request very quickly)? - Cost effective (low cost to build a system that serves many users)? --- # Scalability ### Why should online services be scalable? - Consider what would happen when a lot of users are browsing your website, using your app, or accessing your APIs - Growth in **traffic** and **data** - Our objectives: - To keep the service **available** - To keep the **performance** of the system at a certain level - To keep it **cost-effective** to operate the service --- # Scalability ### Consider the following systems: - Common client-server system with a **database** - Clients are distributed **geo-graphically** - Different **types** of clients (e.g. Web, mobile, API) - Different **kinds** of requests (e.g. retrieval, data submission, image uploading, file editing, video encoding…) - Different kinds of **data** (e.g. relational data, text, images, videos…) - ... --- # Scalability ### Scalability does **NOT only** mean: - Improving your codes - Using a more powerful machine - Adding more RAMs ### Scalability is about - Identifying and mitigating bottlenecks - Considering the whole architecture of the system in order to engineer a solution --- # Scalability ### Scalability is **NOT** equal to - Performance - Choosing a particular operating system - Choosing a particular programming language - Choosing a particular storage technology --- # Scalability - Related Concepts ### High Availability (HA) - A system is **highly available** if it is operational for most of the time in a specific period (e.g. a year) - For example, if a service has 99.9% availability, it is expected that the service will be operational for 24 x 365 x 0.999 = 8751.24 hours in a year (also known as **up time**) - Ref: [Slack's Service Level Agreement (SLA)](https://get.slack.help/hc/en-us/articles/204113126-Service-Level-Agreements-SLA-) - **Principles** of HA: eliminate single points of failure, avoid data loss in case of failure, and detection of failures as they occur - A highly available system will be a distributed one, hence usually scalable --- # Scalability - Related Concepts ### System Performance - How efficient is the system in performing a task given certain amount of computing resources (CPU time, memory, etc.) - Using a language that **executes code faster** at runtime - Using a faster sorting **algorithm** - **Optimizing your SQL queries** to shorten the time to retrieve data from the database - ... --- # Scalability - Definition ### Two common definitions/views of "scalability": 1. Scalability is the ability to handle increased workload
(without adding resources to a system)
2. Scalability is the ability to handle increased workload by repeatedly applying a cost-effective strategy for extending a system’s capacity
Reference: Charles et al., 2006. On System Scalability.
[http://resources.sei.cmu.edu/library/asset-view.cfm?assetid=7887](http://resources.sei.cmu.edu/library/asset-view.cfm?assetid=7887) --- # Scalability - Definition ### The first definition is of less interest to us in this course - It does NOT focus on whether the system can be improved / extended when the workload increases - It focus on whether the system has good performance on a large problem, not on how the system can be scaled ### Instead, we are more interested in the second definition, in particular: - **"repeatedly applying a cost-effective strategy"** to extend the system’s capacity --- # Scalability - Definition ### "Repeatedly applying a cost-effective strategy" - We are **NOT** interested in **one-time increase** in capacity, such as: - replacing a O(n2) algorithm with an O(n log n) one - coding in a language which produces programs that run faster
- We are **NOT** interested in solutions that requires **a relatively high cost**, such as: - replacing a 4-core CPU within a 16-core CPU - building a super-computer using advanced HPC technologies --- # Horizontal vs. Vertical ### Vertical scaling – also known as **"scale UP"** - Add resources to a single node in a system - E.g. adding CPU or RAMs, increasing the disk size of a DB server, etc. ### Horizontal scaling – also known as **"scale OUT"** - Add more nodes to a system - Systems are designed to be distributed - E.g. adding more servers to a cluster of computers --- # Scaling Out ### In order to achieve scalability, we usually aim to build a system that can easily **scale-out (horizontally)** - Allow distributing workload easily - If you scale-up, you will quickly reach a **limit** (either technically or financially) - Trade-off: you need something to **manage** your large number of nodes --- # Scaling Out - Have you ever imagined how many servers are supporting **Google** or **Facebook**? - Let's take a look at Facebook's report of [Fourth Quarter and Full Year 2017](https://www.prnewswire.com/news-releases/facebook-reports-fourth-quarter-and-full-year-2017-results-300591468.html):
--- # Scaling Out - How more servers help you to scale?
--- class: split # Scalability .column-left[
Scalability Rules: 50 Principles for Scaling Web Sites Chapter 2 (Figure 2.2)
] .column-right[ - Principles for distributing workloads in a system 1. **Horizontal Duplication**
(Introduce redundancy) 2. **Split by Functions**
(Split by verbs or nouns) 3. **Split by Storage**
(Formulaic split: split database based on one or more columns) ] --- # 1. Horizontal Duplication - When multiple instances of your service can operate **independently**:
--- # 1. Horizontal Duplication - When the **read-to-write ratio** of your database is high (e.g. 5:1): - For many applications, the database is read much more frequently than is written to - Consider how often your post a new status on Facebook vs. how often you read your news feed - Simple way to scale: have multiple **read-only** database to handle the many read requests
--- class: equal-split # 2. Split by Functions ### Scaling through distribution based on the **separation of distinct / different functions** (verbs) and **data** (nouns)
.column-left[ ### By functions (verbs) - Registration - Authentication / Login - Search - Recommend - Resize images ] .column-right[ ### By data (nouns) - User profiles - Items for sale - Product catalogues - Images ] --- # 3. Split by Storage - Also known as **sharding** - take a data set and partition it into multiple parts based on some rules - Consider an online services that serves multiple enterprise users (each company has an account and data are not supposed to be seen by another company) - You are not going to combine data from different companies in any function - You can have dedicated servers storing data for each company --- # Summary ### The keys to build scalable systems are: - Identifying **bottlenecks** of the system - **Horizontal duplication**: allow scaling to be done quickly - **De-coupling**: let loosely-coupled modules interact through simple and well-defined interfaces --- class: center, middle # Load Balancing --- class: split # Load Balancing ### The act of distributing workloads across multiple computing nodes
.column-left[
] .column-right[ - Avoid overloading a single node - Maximise utilization of different nodes - Optimise usage of resources - Increase reliability and availability ] --- # Load Balancing ### Different ways to implement a load balancer - DNS / Hardware / Software - Implement it on different networking layers - Algorithms: random / Round-robin / dynamic scheduling --- # Load Balancing Algorithms - **Random** - **Round-Robin** - Distribute load equally by using a rotating scheme - **Weighted Round-Robin** - A performance weight is assigned to each server - **Least Connections** - Sends requests to a server with the fewest number of connections - **Fastest Response Time** - Select the server that responded in the shortest time --- # Server Health Checking - A load balancer might need to check whether the servers are operating normally and are able to give responses. - How can we check if one of the servers has died? 1. **Passive**: **Observe** the **network traffic** 2. **Active**: **Probe** the server for a **quick response** - What are the pros and cons of these two? - How can health checking be done? --- # Server Health Checking - **Ping** - Send an ICMP message to the server and check for response - **TCP Connection** - Attempt to establish a TCP connection to the server (on port 80) - **HTTP GET (Header)** - Check the status code of a GET request - **HTTP GET (Content)** Check the content returned by the server for a GET request
- **Question**: What are the limitations of the first three methods? --- # DNS - DNS stands for **Domain Name System** - A **directory service** of the Internet
--- # DNS Load Balancing ### A simple way of implementing load balancing - Create two or more **“A” records** in the DNS zone - The DNS server sends the client a list of records in **random order** or in a round-robin fashion - The client attempts to connect to the application server using the **first IP address** in the list --- # DNS Load Balancing ### What are “A” records? - Address record: mapping a domain name to an IPv4 address ### Other records: - AAAA: domain name to IPv6 address - CNAME: alias of a domain name - MX: mail exchange (identifies the mail server of the domain) - NS: name server record --- # Round-robin DNS Load Balancing
--- # DNS Load Balancing - An Example ```bash $ dig www.youtube.com ; <<>> DiG 9.9.5-3ubuntu0.5-Ubuntu <<>> www.youtube.coma ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33788 ;; flags: qr rd ra; QUERY: 1, ANSWER: 5, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;www.youtube.com. IN A ;; ANSWER SECTION: www.youtube.com. 21423 IN CNAME youtube-ui.l.google.com. youtube-ui.l.google.com. 146 IN A <IP_ADDRESS> youtube-ui.l.google.com. 146 IN A <IP_ADDRESS> youtube-ui.l.google.com. 146 IN A <IP_ADDRESS> youtube-ui.l.google.com. 146 IN A <IP_ADDRESS> ``` --- # DNS Load Balancing ### Simple, but a few limitations: - **Stickiness**: It takes time to propagate changes in DNS records adding or removing servers can be slow - Loading can NOT be balanced accurately due to **DNS caching** (e.g. when a lot of users are from the same ISP) - It does NOT take into account transaction time, server load, network congestions, etc. - NO **fault tolerance** (DNS server does not know if a server is operating or not) --- class: equal-split # DNS Load Balancing .column-left[ - While having some limitations, DNS load balancing is an important method for achieving **availability** - The **only way** to divert traffic to **different data centres** ] .column-right[
] --- # Hardware / Software Load Balancing - Load balancing can be done at the different layers ### OSI model Layer 4 (Transport Layer) Load Balancing - Relatively simple - Balancing server load without inspecting the content of messages - Distribute traffic based on servers’ response time - Routing is based on inspecting the first packet of the data stream --- # Layer 4 Load Balancing
--- # Layer 4 Load Balancing ### What are the advantages of Layer 4 Load Balancing? - **Simple**: easy to implement - **Efficient**: load balancer only inspect the **first packet** ### However - It CANNOT maintain application session information - It CANNOT route requests to different servers **dynamically** based on their content (e.g. requesting static content vs. dynamic content) --- # Layer 7 Load Balancing ### Layer 7 (Application Layer) Load Balancing - **Application-level** load balancing - Parse requests in the **application layer** (e.g. HTTP), and distribute them to servers **based on the content** of the request (e.g. the URL or the cookie) - Relatively **high overhead** in parsing the metadata - Mostly **HTTP** (because of the popularity of Web apps) --- # Layer 7 Load Balancing
Ref: Cardellini, Casalicchio, Colajanni, and Yu. 2002. The state of the art in locally distributed Web-server systems. ACM Computer. Survey, 34, 2 (June 2002), 263-311. --- # Layer 7 Load Balancing ### Characteristics of Layer 7 Load Balancing - More CPU-intensive (e.g. for parsing HTTP content) - Can also apply compression, encryption or caching on the content to be delivered - Does not require all servers in the backend to have serve the same content (compare with Layer 4 load balancing) Layer 7 load balancers are also called **Application Delivery Controllers** --- # Layer 7 Load Balancing - One important ability of a layer 7 load balancer is **SSL termination** - The load balancer has to be able to decrypt the request in order to **inspect the content** - It therefore must be configured with **a valid SSL certificate**
--- class: middle, center # Caching --- # Caching * **Cache** is a **temporary** data storage that stores data for **quick retrieval** in the future * Mostly implemented as a key-value store, where the unique key can be used to retrieve the value at `O(1)` time * Cache is usually **small** (RAM is expensive!) * Cache can be persistent, if it also stores the current state into some persistent storage (e.g. the hard disk) --- class: equal-split # Caching using Redis * **Redis** can be used as a cache using it's key/value store function ```python # import redis from redis import StrictRedis # StrictRedis offers API official Redis commands # Establish a connection to redis on localhost r = StrictRedis('localhost') # Set the value of a key r.set('test_key', 'test_value') # Get the value of a key # value will be None if no such key is found in redis value = r.get('test_key') ``` --- # Caching ML Model Predictions * Sometimes, generating a prediction takes time and computing resources * If it is possible that the **same inputs** will be received, we can **cache predictions** to respond more quickly ```python # Let's assume x is a feature vector # And let's assume we have a hash function that hash the vector into a string input_hash = hash_vector(x) # Attempt to retrieve cached prediction cached = r.get(input_hash) if cached is not None: return cached else: # Submit x to the model # ... ``` --- # Cache Replacement Algorithms * **Hit** (found) vs. **Miss** (not found) * To make efficient use of a cache, we want to have **high hit rate** * We need to determine **what** should be cached * **Ideal case**: discard the information that will NOT be needed for the **longest time** in the future * Some commonly used **algorithms**: - FIFO (First-in-first-out) (i.e. a queue) - LRU (Least recently used) - LFU (Least frequently used) * More can be found at [https://en.wikipedia.org/wiki/Cache_replacement_policies](https://en.wikipedia.org/wiki/Cache_replacement_policies) --- class: center, middle # Cloud Computing --- # Cloud Computing * What is **cloud computing**?
--- # Servers * What people do when they need to run a network application?
THe first Web server (a NeXT computer)
--- # Data Centres * What people do when they need to run a network application?
Data centres
--- class: split # Data Centre Services .column-left[
] .column-right[ Figure from "Cloud Computing - A Primer - The Internet Protocol Journal", The Internet Protocol Journal, Volume 12, No.3 ] --- # Data Centre Services
Figure from "Cloud Computing - A Primer - The Internet Protocol Journal", The Internet Protocol Journal, Volume 12, No.3
--- # Cloud Computing * **NIST** (National Institute of Standards and Technology) - “Cloud computing is a model for enabling **ubiquitous**, **convenient**, **on-demand** network access to a shared pool of configurable **computing resources** (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.” * Ref: [http://www.nist.gov/itl/cloud/](http://www.nist.gov/itl/cloud/) --- class: split # Cloud Computing .column-left[ ### **John McCarthy**
(who invented the term "Artificial Intelligence") * The first to suggest publicly (in 1961 in a speech given to celebrate MIT's centennial) that computer time-sharing technology might result in a future in which computing power and even specific applications could be sold through the utility business model (like water or electricity). ] .column-right[
] --- # Cloud Computing
--- # Cloud Computing Characteristics
--- # Infrastructure-as-a-Service (IaaS) * To provision **processing**, **storage**, **networks**, and other fundamental **computing resources** where the consumer is able to deploy and run arbitrary software (e.g. virtual machines) * Consumers do not manage or control the underlying cloud infrastructure but have control over **operating systems**, **storage**, and **deployed application**s; and possibly limited control of select **networking components**
--- # Platform-as-a-Service (PaaS) * To deploy onto the cloud infrastructure **consumer-created or acquired applications** created using programming languages, libraries, services, and tools supported by the provider. * Consumers have control over the **deployed applications** and possibly **configuration settings** for the application-hosting environment.
--- # Software-as-a-Service (SaaS) * To use the provider's **applications** running on a cloud infrastructure, which are accessible from various client devices through either a thin client interface. * Consumer do not manage or control the underlying cloud infrastructure including network, servers, operating systems, storage, or even individual application capabilities
--- class: middle, center # Enabling Technologies of Cloud Computing --- # What Makes Cloud Computing Possible?
--- # Virtualization Technologies * **Virtualisation** divides the resources of a computer into multiple **isolated** execution environments, by applying one or more concepts or technologies such as hardware and software partitioning, time-sharing, partial or complete machine simulation, emulation, etc.
--- # Hypervisors * **Virtualisation** is enabled by software called **hypervisors** * What does a hypervisor do? - Provide **isolated execution environment** for each VM - Manage **access of physical resources** by each VM * Two types of hypervisors:
--- # Hypervisors * Hypervisors get its name because it is conceptually **one level higher than a supervisory program (part of an OS)**. * **Type 1** hypervisors run directly on bare metal instead of within an operating system environment - provide the best performance, availability, and security of any form of hypervisor. * **Type 2** hypervisors run within an operating system environment running on the host computer - typically referred to as hosted virtualization --- # Cloud Management Systems * A layer above hypervisors * **Manage** a cloud infrastructure, which may include many physical nodes, networking devices, storage devices, etc.
--- # Cloud Management Systems ### Some of the functions of a CMS: * Resource allocation (Determine where to create a VM) * Resource monitoring (Usage of physical resources) * Enforcement of resource, security and configuration policies * User management & billing * VM image management * User interface for on-demand self-service * ... --- class: middle, center # Auto-scaling --- # Cloud & Scalability ### Cloud computing allows you to **add** or **remove** computing resources more quickly and easily * Adding one more application server * Adding new hard disk storage space * Adding extra database servers * ... --- # Auto-scaling * Given that everything is **virtual** in the cloud, all changes to the configurations of the virtual machines, applications, firewalls, etc., can be automated * **Auto-scaling** refers to the idea of automatically adding or removing computing resources in the system **based on the actual usage** in real-time * Auto-scaling can be triggered by **different rules**, for example: - Based on a schedule (E.g. start three more application servers during Christmas) - Base on demand (work load) - Example 1: start one more server if the average CPU utilization rate is over 80% for 10 minutes) - Example 2: stop one server if the average CPU utilization rate is less than 20% for 10 minutes) --- # Case Study * [Netflix](https://medium.com/netflix-techblog) is an online video streaming company and it servers millions of users at different times. * However, the load on the system can be different at different hours and on different days
* Imagine if you can predict the load on the application, you can auto-scale in advance - React to changes in demand more quickly - Save the amount of $$$ spent on unused resources * Ref 1: [http://techblog.netflix.com/2012/01/auto-scaling-in-amazon-cloud.html](http://techblog.netflix.com/2012/01/auto-scaling-in-amazon-cloud.html) * Ref 2: [http://techblog.netflix.com/2013/11/scryer-netflixs-predictive-auto-scaling.html ](http://techblog.netflix.com/2013/11/scryer-netflixs-predictive-auto-scaling.html ) --- # Scaling using Cloud Services * Take a look at how auto-scaling can be configured in **Amazon AWS**
Auto Scaling EC2 With Custom Scaling Policy
[https://www.youtube.com/watch?v=5swEiz0i-kE](https://www.youtube.com/watch?v=5swEiz0i-kE) * Another video introducing similar function in **Google Cloud**
Learn how to scale your applications with Google Compute Engine
[https://www.youtube.com/watch?v=TfbEwfYjKl4](https://www.youtube.com/watch?v=TfbEwfYjKl4) --- class: middle, center # Docker --- # Deploying Applications ### Deploy: to put your application into production * How would you develop and deploy your application? - Set up a development environment to develop your app - Set up the production environment, and copy your application to the production machine * **Problem?** - It takes time to set up the production environment --- # Deploying Applications ### Does using **cloud** and **virtual machines** solve the problem?
--- # Deploying Applications ### **Limitations** of using Virtual Machines (VMs) * They run on hypervisor, and thus are not particularly efficient in using the resources of the machine * The size of the image is usually very large (at the order of GB) * Requires some time to boot and start up (at the order of minutes) * One physical machine can only support at most tens of VMs --- # Docker * [Docker](https://www.docker.io/) is a technology that provides virtualisation solution and allows a developer to package an application with all of its dependencies into a standardised unit for deployment. * A relatively **lightweight** virtualisation compared to VMs * Applications run inside **containers** and are **isolated** from each other * A container can be started in **seconds** * More efficient use of computing resources on the machine
--- # Docker
* See also: [https://docs.docker.com/get-started/#containers-and-virtual-machines](https://docs.docker.com/get-started/#containers-and-virtual-machines) --- class: equal-split # Basic Concepts in Docker .column-left[ * **Image**:
a read-only file containing the application * **Container**:
an instance of an image for executing the application * **Repository**:
where images are stored, like GitHub - Can be private or public - The largest public repository is [Docker Hub](https://hub.docker.com/) ] .column-right[
] --- # Creating a Docker Image * To create a docker container that runs your application, you need to: - Create a docker image (usually from a **base image**) - This is done by write a **Dockerfile**, which describes how the image is created/built * Let's say we have a very simple Web application written in Flask ```python from flask import Flask app = Flask(__name__) @app.route("/") def index(): return "Hello!" if __name__ == "__main__": app.run(host="localhost", port=5000) ``` --- # Creating a Docker Image * We can create a docker image for this application using the `ubuntu:latest` base image * Our Dockerfile: ```python # Use the python3.6 base image FROM python:3.6 # Set working directory to /app WORKDIR /app # Copy our application file into the image COPY app.py /app # Install our dependency (Flask in this case) RUN pip install Flask # Run app.py when the container is launched CMD ["python", "app.py"] ``` --- # Creating a Docker Image * Building the **image** using the Dockerfile: * (`-t` assigns a **tag** to the image created) ```bash $ sudo docker build -t flask-app:1.0 . ``` * Creating a **container** running the app using the image built above ```bash $ sudo docker run -p 5000:5000 flask-app:1.0 ``` * Note: we **forward** connections on port 5000 of the host machine to the port 5000 of the docker container --- --- class: center, middle # End of Lecture 12


Novel mutation in the gene encoding c-Abl-binding protein SH3BP2 causes cherubism.
Cherubism is a rare autosomal dominant inherited condition caused by mutations in the c-Abl-binding protein SH3BP2. It is characterized by multiple cystic giant cell lesions of the jaw appearing in early childhood with stabilization and remission after puberty. In the present study, we used direct sequence analysis of the SH3BP2 gene of several individuals from a family with cherubism to search for additional SH3BP2 mutations resulting in cherubism. In affected relatives, we found a previously unreported G to A transition in exon 9 leading to a Gly to Arg substitution at amino acid position 420. G420R has been reported previously with a G to C transversion. To date there have been no disease causing mutations outside exon 9. Therefore, the amino acid sequence from positions 415 to 420 may represent a specific protein domain which, when disrupted, leads to the cherubism phenotype.


It's a text filter that can replace unprintable characters with space chars
Download: CleanTextFilter_20100930.zip
Instructions:
Source code:
Source code in Object Pascal / Delphi (the .DPR file holds the Delphi command-line project code) included
(C)opyright 2010 - Zoomicon / George Birbilis
Free to use / give due credit


REPORT MENU
The report menu is accessed from the manager home page and allows the user to
view and create reports.
The report menu page.
By clicking on the Report drop down list, different types of reports are shown.
After selecting a report, a brief description of the report is displayed.
An example of a report that is displayed.


<EMAIL_ADDRESS>056666463-056666738
Request
Tap each delivery option to see wait time, sizes and price. Chose a flat fee of $30 Pick up Truck, $40 Flat Bed Truck, $50 Box Truck in your county. Then enter your pickup location and tap request—your driver will arrive in minutes.
Deliverys
Your driver comes to you. You’ll see your driver’s contact information and vehicle details in the app, so you know you’re getting in the right car.
 We automatically charge the credit card on file, so you never need cash.
FAQs


Home
About Us
Classes
Nutrition
Contact Us
Explore the classes we offer at our center:
Strength
Flexibility
Intensity


| click |
css=div.block-guest div.btn-set a |
|
| verifyElementPresent |
css=.step-2 .block-billing-address.editing |
|
| verifyElementPresent |
css=.step-2 .block-shipping-address.editing |
|
| verifyElementPresent |
css=.step-2 .block-shipping-address .tips.active |
|
| verifyNotVisible |
css=.step-2 .block-shipping-address .form-holder |
|
| verifyElementPresent |
css=.step-2.active |
|
| type |
id=billing:firstname |
Test |
| type |
id=billing:lastname |
Test |
| type |
id=billing:email |
<EMAIL_ADDRESS>|
| type |
id=billing:street1 |
Test |
| type |
id=billing:street2 |
Test |
| type |
id=billing:city |
Test |
| type |
id=billing:postcode |
Test |
| select |
id=billing:country_id |
label=Netherlands |
| type |
id=billing:telephone |
Test |
| click |
id=billing:use_for_shipping_no |
|
| verifyElementPresent |
css=.step-2 .block-shipping-address.editing |
|
| verifyElementNotPresent |
css=.step-2 .block-shipping-address .tips.active |
|
| verifyVisible |
css=.step-2 .block-shipping-address .form-holder |
|
| click |
id=billing:use_for_shipping_yes |
|
| verifyElementPresent |
css=.step-2 .block-shipping-address.editing |
|
| verifyElementPresent |
css=.step-2 .block-shipping-address .tips.active |
|
| verifyNotVisible |
css=.step-2 .block-shipping-address .form-holder |
|
| click |
css=.step-2 .btn-next-step |
|


QAbstractFormBuilder Class
The QAbstractFormBuilder class provides a default implementation for classes that create user interfaces at run-time. More...
| Header: | #include <QAbstractFormBuilder> |
| qmake: | QT += designer |
| Inherited By: |
Public Functions
| QAbstractFormBuilder() | |
| virtual | ~QAbstractFormBuilder() |
| QString | errorString() const |
| virtual QWidget * | load(QIODevice *device, QWidget *parent = Q_NULLPTR) |
| virtual void | save(QIODevice *device, QWidget *widget) |
| void | setWorkingDirectory(const QDir &directory) |
| QDir | workingDirectory() const |
Detailed Description
The QAbstractFormBuilder class provides a default implementation for classes that create user interfaces at run-time.
QAbstractFormBuilder provides a standard interface and a default implementation for constructing forms from user interface files. It is not intended to be instantiated directly. Use the QFormBuilder class to create user interfaces from UI files at run-time. For example:
MyForm::MyForm(QWidget *parent) : QWidget(parent) { QFormBuilder builder; QFile file(":/forms/myWidget.ui"); file.open(QFile::ReadOnly); QWidget *myWidget = builder.load(&file, this); file.close(); QVBoxLayout *layout = new QVBoxLayout; layout->addWidget(myWidget); setLayout(layout); }
To override certain aspects of the form builder's behavior, subclass QAbstractFormBuilder and reimplement the relevant virtual functions:
- load() handles reading of UI format files from arbitrary QIODevices, and construction of widgets from the XML data that they contain.
- save() handles saving of widget details in UI format to arbitrary QIODevices.
- workingDirectory() and setWorkingDirectory() control the directory in which forms are held. The form builder looks for other resources on paths relative to this directory.
The QFormBuilder class is typically used by custom components and applications that embed Qt Designer. Standalone applications that need to dynamically generate user interfaces at run-time use the QUiLoader, found in the Qt UI Tools module.
See also Qt UI Tools.
Member Function Documentation
QAbstractFormBuilder::QAbstractFormBuilder()
Constructs a new form builder.
[virtual]
QAbstractFormBuilder::~QAbstractFormBuilder()
Destroys the form builder.
QString QAbstractFormBuilder::errorString() const
Returns a human-readable description of the last error occurred in load().
This function was introduced in Qt 5.0.
See also load().
[virtual]
QWidget *QAbstractFormBuilder::load(QIODevice *device, QWidget *parent = Q_NULLPTR)
Loads an XML representation of a widget from the given device, and constructs a new widget with the specified parent.
See also save() and errorString().
[virtual]
void QAbstractFormBuilder::save(QIODevice *device, QWidget *widget)
Saves an XML representation of the given widget to the specified device in the standard UI file format.
See also load().
void QAbstractFormBuilder::setWorkingDirectory(const QDir &directory)
Sets the current working directory of the form builder to the specified directory.
See also workingDirectory().
QDir QAbstractFormBuilder::workingDirectory() const
Returns the current working directory of the form builder.
See also setWorkingDirectory().


Note : If the tables are already created, it will indicate so on the console. Proceed to the step no. 3 in this case
Prerequisites
Make sure a multi-partition processing instance and the designdb
database are created before proceeding. Please refer to the Design Overview section for detailed instructions.
The prerequisite tables are created in order to run the query against tables created for each feature
and compare the query performance improvement in each case, cumulatively
Operation
- Click on the action button on the Action panel
- It creates tables enabled with database partitioning
- It populate data into the tables. Data is stored in logical data partitions based on the hashing key specified
Note
- For the syntax of the above, please refer to the following in this workshop:
- Database Partitioning (DPF) - page 2


---
layout: post
title: Oracle Open World
date: '2007-10-27T20:45:00.000-07:00'
author: Kris Rice
tags:
modified_time: '2007-10-30T18:47:40.303-07:00'
blogger_id: tag:blogger.com,1999:blog-37621059.post-1120854842310489345
blogger_orig_url: http://krisrice.blogspot.com/2007/10/open-world-is-almost-here.html
---
Open world is almost here. Here's my connect card. I'll pretty much be at the booth or between our sessions. Stop by if you want to chat.


|
C++ Common
|
Utility functions related to the file system. More...
Functions | |
| std::string | readFullFile (const std::string &filename) |
| Read full file into a single string. More... | |
| std::vector< std::string > | readLineByLine (const std::string &filename) |
| Read file into vector<string> of lines. More... | |
| size_t | lineCount (const std::string &filename) |
| Returns number of lines in a file. More... | |
| std::vector< std::string > | getFilesInDir (const std::string &dirpath, const std::string &ext="") |
| Get a list of files in directory. More... | |
| std::vector< std::string > | getDirsInDir (const std::string &path) |
| Get a list of directories in directory. More... | |
| bool | makeDir (const std::string &dirpath) |
| Wrapper to create a directory. More... | |
| bool | isFile (const std::string &filepath) |
| Determine if resource at path is a file. More... | |
| bool | isDir (const std::string &dirpath) |
| Determine if resource at path is a directory. More... | |
| bool | isExc (const std::string &filepath) |
| Determine if resource at path is executable. More... | |
| bool | fexists (const std::string &filepath) |
| Determine if a file exists. More... | |
| bool | dexists (const std::string &dirpath) |
| Determine if a directory exists. More... | |
| bool | dempty (const std::string &dirpath) |
| bool | deleteFile (const std::string &filepath) |
| Delete a file. More... | |
| bool | deleteDir (const std::string &dirpath) |
| Delete a directory and contents. More... | |
| bool | movef (const std::string &curpath, const std::string &newpath) |
| Move a file. More... | |
| bool | moved (const std::string &curpath, const std::string &newpath) |
| Move a directory. More... | |
| bool | copyf (const std::string &curpath, const std::string &newpath) |
| Copy a file. More... | |
| bool | copyd (const std::string &curpath, const std::string &newpath) |
| Copy a directory. More... | |
| float | fsize (const std::string &filepath, const std::string &order="b") |
| Return size of file. More... | |
| std::vector< std::vector< std::string > > | csvToMatrix (const std::string &filename) |
| Parse a csv file into a 2D vector. More... | |
| void | appendToFile (const std::string &filepath, const std::string &msg) |
| Wrapper to append text to a file. More... | |
| std::string | getWorkingDir () |
| Get the current working directory. More... | |
| std::string | getPermissions (const std::string &path) |
| Return the permissions (user group global) of specified file or directory. More... | |
| std::string | getModifiedTime (const std::string &path) |
| Return the last modified time of a file or directory. More... | |
| std::string | getAccessTime (const std::string &path) |
| Return the last access time of a file or directory. More... | |
| bool | clearFile (const std::string &path) |
| Clear the contents of a file. More... | |
Variables | |
| const std::string | THIS_DIR_DOT {"."} |
| const std::string | PREV_DIR_DOT {".."} |
Utility functions related to the file system.
FSUtils completely includes the older FileUtils namespace. In order to continue to use code written for the FileUtils namespace you need to define DEPRECATED_NAMESPACE at compile time. The definition will enable FileUtils by namespace FileUtils = FSUtils.
|
inline |
Wrapper to append text to a file.
| fileName | File name if file is in cwd, else path to file |
| msg | The text to append to the file |
|
inline |
Clear the contents of a file.
| std::runtime_error | if path can't be found |
|
inline |
Copy a directory.
| curpath | The current path to the directory |
| newpath | Where to copy the directory |
| std::runtime_error | if curpath can't be opened or newpath can't be created |
|
inline |
Copy a file.
| curpath | The current path to the file |
| newpath | Where to copy the file |
|
inline |
Parse a csv file into a 2D vector.
The function parses a csv, reading the file line by line then splitting each line on the commas, returning a 2D vector representing the rows/cols of the csv...i.e. a matrix.
| fileName | File name if file is in cwd, else path to file |
|
inline |
Delete a directory and contents.
| dirpath | The path to the directory |
| std::runtime_error | if dirpath can't be opened |
|
inline |
Delete a file.
| filepath | The path to the file |
|
inline |
Determine if a directory contains any files
Will ignore "." and ".."
| dirpath | The path to the directory in question |
| std::runtime_error | if dirpath is not found |
|
inline |
Determine if a directory exists.
| path | Path to the directory in question |
|
inline |
Determine if a file exists.
| path | Path to the file in question |
|
inline |
Return size of file.
Optional second parameter to select the return value
bytes = "b"
kilobytes = "kb"
megabytes = "mb"
gigabytes = "gb"
| filepath | The path to the file |
| std::runtime_error | if filepath can't be found |
|
inline |
Return the last access time of a file or directory.
| std::runtime_error | if path can't be found |
|
inline |
Get a list of directories in directory.
"." and ".." will not be returned in the list of directories
| path | Path to the directory in question |
| std::runtime_error | if path can't be opened |
|
inline |
Get a list of files in directory.
| dirPath | Path to the directory in question |
| ext | Optional file extension, will only return files meeting passed file extension |
| std::runtime_error | if dirPath can't be opened |
|
inline |
Return the last modified time of a file or directory.
| std::runtime_error | if path can't be found |
|
inline |
Return the permissions (user group global) of specified file or directory.
| std::runtime_error | if path can't be found |
|
inline |
Get the current working directory.
Will fail on path lengths > than SHRT_MAX
|
inline |
Determine if resource at path is a directory.
| path | Path to the resource |
|
inline |
Determine if resource at path is executable.
| path | Path to the resource |
|
inline |
Determine if resource at path is a file.
| path | Path to the resource |
|
inline |
Returns number of lines in a file.
This code comes almost letter for letter from the "wc" utility, I am not the author and after a brief search I can't find the author on the GNU source website
| fileName | File name if file is in cwd, else path to file |
| std::runtime_error | if fileName can't be opened |
|
inline |
Wrapper to create a directory.
| path | The path to where the directory should be created |
|
inline |
Move a directory.
| curpath | The current path to the directory |
| newpath | Where to move the file |
| std::runtime_error | if curpath can't be opened or if newpath can't be created |
|
inline |
Move a file.
| curpath | The current path to the file |
| newpath | Where to move the file |
|
inline |
Read full file into a single string.
Will read a full file, all content, into a single string
| fileName | File name if file is in cwd, else path to file |
| std::runtime_error | if fileName can't be opened |
|
inline |
Read file into vector<string> of lines.
Will read the full file then proceed to split it into a vector<string> of lines
| fileName | File name if file is in cwd, else path to file |
| std::runtime_error | if fileName can't be opened |


|
Scientific Fortran Tools (SciFT)
1.2
|
The IntegerList class is a template class that provides linked lists. It stores a list of values and provides iterator-based access as well as insertions and removals. IntegerList features both STL-style iterators and Java-style iterators. For developers who already know STL, have the advantage of familiarity. More...
Public Member Functions | |
| generic | init => initList |
| generic | assignment => copyList |
| procedure | initlist |
| procedure | copylist |
| final | destroylist |
| procedure | str |
| procedure | show |
| procedure | tofstream |
| generic | size => ssize |
| procedure | isempty |
| generic | append => appendValue, appendFArray |
| procedure | prepend |
| procedure | insert |
| generic | erase => eraseFromPtr, eraseFromPos |
| procedure | erasefromptr |
| procedure | erasefrompos |
| procedure | eraseallexcept |
| procedure | eraseallexceptfirst |
| procedure | eraseallexceptlast |
| procedure | clear |
| generic | at => atFromPtr, atFromPos |
| generic | replace => replaceFromPtr, replaceFromPos |
| procedure | ptr |
Public Attributes | |
| integer | nitems = 0 |
| class(integerlistiterator), pointer | begin => null() |
| class(integerlistiterator), pointer | end => null() |
Private Member Functions | |
| procedure, private | ssize |
| procedure, private | appendvalue |
| procedure, private | appendfarray |
| procedure, private | atfromptr |
| procedure, private | atfrompos |
| procedure, private | replacefromptr |
| procedure, private | replacefrompos |
The IntegerList class is a template class that provides linked lists. It stores a list of values and provides iterator-based access as well as insertions and removals. IntegerList features both STL-style iterators and Java-style iterators. For developers who already know STL, have the advantage of familiarity.
Here's an example of a List that stores integers ...
{.c}
... and a IntegerList that stores Atom values:
{.c}
Finally, you can use the first one thus:
{.f90}
Definition at line 168 of file IntegerList.f90.
| generic integerlist::integerlist::append | ( | ) |
Definition at line 187 of file IntegerList.f90.
|
private |
Definition at line 189 of file IntegerList.f90.
|
private |
Definition at line 188 of file IntegerList.f90.
| generic integerlist::integerlist::assignment | ( | ) |
Definition at line 175 of file IntegerList.f90.
| generic integerlist::integerlist::at | ( | ) |
Definition at line 199 of file IntegerList.f90.
|
private |
Definition at line 201 of file IntegerList.f90.
|
private |
Definition at line 200 of file IntegerList.f90.
| procedure integerlist::integerlist::clear | ( | ) |
Definition at line 198 of file IntegerList.f90.
| procedure integerlist::integerlist::copylist | ( | ) |
Definition at line 178 of file IntegerList.f90.
|
final |
Definition at line 179 of file IntegerList.f90.
| generic integerlist::integerlist::erase | ( | ) |
Definition at line 192 of file IntegerList.f90.
| procedure integerlist::integerlist::eraseallexcept | ( | ) |
Definition at line 195 of file IntegerList.f90.
| procedure integerlist::integerlist::eraseallexceptfirst | ( | ) |
Definition at line 196 of file IntegerList.f90.
| procedure integerlist::integerlist::eraseallexceptlast | ( | ) |
Definition at line 197 of file IntegerList.f90.
| procedure integerlist::integerlist::erasefrompos | ( | ) |
Definition at line 194 of file IntegerList.f90.
| procedure integerlist::integerlist::erasefromptr | ( | ) |
Definition at line 193 of file IntegerList.f90.
| generic integerlist::integerlist::init | ( | ) |
Definition at line 174 of file IntegerList.f90.
| procedure integerlist::integerlist::initlist | ( | ) |
Definition at line 177 of file IntegerList.f90.
| procedure integerlist::integerlist::insert | ( | ) |
Definition at line 191 of file IntegerList.f90.
| procedure integerlist::integerlist::isempty | ( | ) |
Definition at line 186 of file IntegerList.f90.
| procedure integerlist::integerlist::prepend | ( | ) |
Definition at line 190 of file IntegerList.f90.
| procedure integerlist::integerlist::ptr | ( | ) |
Definition at line 205 of file IntegerList.f90.
| generic integerlist::integerlist::replace | ( | ) |
Definition at line 202 of file IntegerList.f90.
|
private |
Definition at line 204 of file IntegerList.f90.
|
private |
Definition at line 203 of file IntegerList.f90.
| procedure integerlist::integerlist::show | ( | ) |
Definition at line 181 of file IntegerList.f90.
| generic integerlist::integerlist::size | ( | ) |
Definition at line 184 of file IntegerList.f90.
|
private |
Definition at line 185 of file IntegerList.f90.
| procedure integerlist::integerlist::str | ( | ) |
Definition at line 180 of file IntegerList.f90.
| procedure integerlist::integerlist::tofstream | ( | ) |
Definition at line 183 of file IntegerList.f90.
| class(integerlistiterator), pointer integerlist::integerlist::begin => null() |
Definition at line 170 of file IntegerList.f90.
| class(integerlistiterator), pointer integerlist::integerlist::end => null() |
Definition at line 171 of file IntegerList.f90.
| integer integerlist::integerlist::nitems = 0 |
Definition at line 169 of file IntegerList.f90.


Robin:
One of the superstars fighting against the monopoly of the large publishers, and literally breaking down pay-walls is the developer of the website SciHub.
In order to unlock the door and “escape” the room, you need to collect three colors
- The flag of the country where the founder of SciHub originated from has the colors blue and …
- What is the color of the key in the SciHub logo?
- What is the default color of the well-known Open Access logo?
When you’re sure about your answers you can continue
The last step is to go to the source of this website on GitHub, where people commonly share scripts publicly
Here’s the link: github.com/jacbel/CBS-OSI-EscapeRoom
Somewhere in this repository is a file with the link to the exit. The name of this file contains the three colors you found above. Go find this file in the repository and follow the link!


bloomreach
Businessmodel of BloomReach
Customer Segments
BloomReach has a niche market business model, with a specialized customer segment. The company targets its offering at retailers, particularly those with an online presence.
Value Proposition
BloomReach offers three primary value propositions: customization, performance, and brand/status.
The company’s solution creates accessibility. Its Personalization Platform has a core technology called the Web Relevance Engine (WRE). The WRE identifies the components of a client’s website content that are most relevant to a particular online consumer (based on search history) and ensures that it surfaces prominently. This allows clients to more effectively reach consumers of interest.
The company’s solution has demonstrated strong performance through tangible results. The WRE analyzes over one billion consumer interactions and semantically interprets goods and services on more than one billion webpages each day. It then adapts websites to capture consumer demand across channels, driving an 80% increase in non-branded natural search traffic. High-profile examples of positive outcomes for specific customers include the following:
- Tilly’s used BloomReach’s solution to power its product discovery experience, resulting in a 20% lift in organic search traffic and a 16% lift in mobile RPV (revenue per visitor)
- Giggle used BloomReach’s solution to create relevant content for customers, resulting in 2,300+ inlinked pages and a 10x lift in thematic page visits
- GUESS used BloomReach’s solution to gets its products noticed, resulting in 24%year-over-year increases in natural search traffic and 50% higher conversion rates
- Bellacor used BloomReach’s solution to improve the user experience, resulting in a major year-over-year increase in natural search traffic that continued a two-year trend of growth
- AllModern used BloomReach to increase its site’s visibility, which resulted in an increase in traffic and revenue, positively impacting profits The company has established a strong brand as a result of its performance. It has several clients in the Fortune 500, including Staples, Nordstrom, Toys ‘R Us, Neiman Marcus, and Pottery Barn. It has also won a number of honors, including a gold medal in the “Innovative Services” category at the Edison Awards (2016) and recognition as one of the “Best Places to Work” in the Bay Area.
Channels
BloomReach’s main channel is its direct sales team. The company promotes its offering through its website, social media pages, webinars, and participation in conferences.
Customer Relationships
BloomReach’s customer relationship is primarily of a self-service, automated nature.
Customers utilize the service through the main platform while having limited interaction with employees. The company’s website features a “Resource Library” that includes self-help tools such as articles, white papers, eBooks, case studies, infographics, webinars, and videos. The site also has an engineering blog.
That said, there is a personal assistance component in the form of phone and e-mail support.
Key Activities
BloomReach’s business model entails maintaining a robust cloud platform for its customers.
Key Partners
BloomReach maintains the following types of partnerships:
- Technology Partners – Firms that integrate their platforms with BloomReach’s solution to enhance their offerings at scale for their customers. Specific partners are IBM, Demandware, Radial, SAP Hybris, Ensighten, Tealium, Mad Mobile, MoovWeb, Signal, Netbiscuits, Skava, and Sööryen.
- Solution Partners – Firms certified in BloomReach technology that work with the company’s clients to help them improve their customer experience strategy. Specific partners include Rise Interactive, Pmdigital, Ovative, BlueSky, 360i, Guidance, Brooks Bell, iProspect, CrossView, and Three Ships. ### Key Resources
BloomReach’s main resource is its proprietary software platform.
It depends on its engineering employees to maintain and update the platform, its sales staff to promote and sell it, and its customer service staff to provide support.
As a startup it has relied heavily on funding from outside investors, raising $97 million from six investors as of January 2016.
Cost Structure
BloomReach has a cost-driven structure, aiming to minimize expenses through significant automation.
Its biggest cost driver is likely sales/marketing costs, a fixed expense. Other major drivers are in the areas of customer support/operations and administration, both fixed costs.
Revenue Streams
BloomReach has one revenue stream: the subscription fees it charges for monthly access to its software-as-a-service platform. Published sources suggest the fees start at $7,500.


We constantly update PWH to keep it as fresh and hilarious as possible. Here, In the Lab, you can help us improve The game by playing a few simivated rounds. Each round, pick the white card that's funniest In comblnalon with the black card. If nothing seems hilarious, Just click the 'none of these are funny' button.
We promise not to use your data for evil.


My Movie List
New movie
Name
Image
action
adventure
animation
comedy
detective
fantasy
history
horror
musical
pirate
romantic
sci-fi
war
western
Release
Save
Clear LS
#
Image
Name
Release


In this project, you will create an experimental probability calculator. Mathematics tells us that the probability of getting heads when flipping a coin is 50%--that's theoretical probability. However, when we count our coin flips, the probability seems to change with time--that's experimental probability. You'll build an app to show this and learn some great programming concepts along the way!
1) Use an online graphics editor (piskelapp.com was used to create graphics for this project) to create a button graphic that the user will click to flip a coin. Upload that graphic and position it somewhere on the screen.
2) Create similar graphics that will sit next to the calculations for the number of heads, number of tails, probability of heads, and probability of tails.
3) Create two text sprites to hold the total number of heads and tails counted so far. Create variables to hold those numbers and have that value display in the text. Start the number at 0.
4) When the flip coin button is pressed, add 1 randomly to the number of heads and tails.
5) Calculate the experimental probability of heads and tails based upon the number of coin flips done so far and update it as the number of flips continues.
6) Create two graphics: one for heads of your coin, and one for tails. Make a sprite appear with the appropriate graphic on each coin flip. You will need a way to alter these sprites later.
7) Make the first coin appear on the upper left of the screen. Make each additional coin appear to the right of the previous one.
8) When the coins get to the end of a row, have the coins start on the next row.
9) When the coins fill up the screen, have the coins clear and restart the coins on top.
10) Want the program to be a game? Find someone near you and play Penny's game. One player picks a sequence of heads and tails and shows it to the other player. The second player makes a sequence of the same length. Use your coin flipper app and the player whose sequence shows up first wins.


Companies I've worked in.
Software Developer
Reyhoon Dec 2017 – Jun 2019
- As the maintainer of the Merchant App (Electron app written in React for managing orders as a restaurant merchant), I Did a huge work on performance tuning such as migrating heavy tasks to separate processes, optimizing React components, Adding cache for printer and worked on new features such as voice OTP login, multiple restaurant branch support, etc.
- As the maintainer of Reyhoon Orders Panel (Written using React, Redux, Socket IO, etc.), I worked on new features coming to the product which required a change on this panel.
- As a member of the Reyhoon Back End Team (PHP, Nodejs & Golang), I worked on different microservices of several parts of Reyhoon with Golang as a new language for me and Node.js.
- As a member of Reyhoon Mobile App Team (Built using React Native and Typescript), I implemented 2 main screens, Orders and User Profile and features like app update, deep linking for the bank payment, etc. in summary I wrote a lot of well-optimized components.
Front End Developer
Hami Andisheh Holding Company Jan 2017 – Dec 2017
- Mainly I worked on a lot of parts of the main company website with tools such as React, Redux, Node Js (express as server rendering tool), Webpack, Grunt, Sass, etc.
- Creator and maintainer of the Back Office admin panel.
Front End Developer
Ghasedak24 Jun 2016 – Dec 2016
- Creator and maintainer of Ghasedak24 Back Office and Web file manager using React.js
Freelance Software Developer
Ponisha Jun 2014 – Jun 2016


Amazon's Audible turned a historic deserted church into an 'Innovation Cathedral' but preserved its stained glass, pipe organ, and bowling alley, Business Insider - Business Insider Singapore
by Mary Meisenzahl, Business Insider US- In May, Amazon’s Audible subsidiary opened an office in a restored historic Newark, New Jersey church.
- The company is calling the former Presbyterian church an “Innovation Cathedral,” and says that it will draw visitors and talent to the city, as well as curious city residents.
- The renovation kept the structure’s stained glass, pipe organ, and bowling alley
- Visit Business Insider’s homepage for more stories.
Amazon-owned audiobook and radio company Audible opened a new office in a historic Presbyterian church its hometown of Newark, New Jersey in May.
Audible is headquartered in Newark, New Jersey, where it moved in 2007. It has since become the city’s fastest-growing private employer, and its new “Innovation Cathedral” is located about a block away from the headquarters. In the renovation, it preserved historic elements while updating other features, and making additions for workspaces.
The new workspace is part of Audible’s commitment to Newark, according to founder and CEO Don Katz.
The cathedral is “proof that our efforts are yielding positive outcomes for business and invention culture, for the many talented people who want to work with us, and for the comeback of this great American city.”
Audible also gives a $500 monthly stipend to employees living within Newark city limits, provides Amazon Fire tablets to Newark high school students, and offers those students paid internships. These policies are part of what Katz calls the “responsibility all corporations must take seriously” to invest in their communities.
Scroll to see how a 1933 church can be repurposed for a 2019 tech company.
Built in 1933, the building was once home to Newark’s Second Presbyterian Church, which had as many as 10,000 members at its height in the middle of the 20th century.
The church shut down in 1995 due to declining numbers, and has sat empty for the last 25 years.
Audible has put the 80,000-square-foot building to use as officespace for 400 employees while preserving many of the historic elements…
…including ornate organ pipes…
…and giant stained glass windows.
The company even restored the old bowling alley that was once part of a community center connected to the church.
The bowling alley was fully refurbished and is now a place for employees to unwind.
Audible also added an auditorium for meetings.
Work cafes and lounges are available for employees to take a break.
Audible employees have the unique opportunity to work while surrounded by beautiful craftsmanship from nearly 100 years ago.
Some recognizable church elements remain and have a new life in the office, like pews.
Other areas have been totally transformed and added on to make the 20th-century church a comfortable 21st-century workspace.
See a video tour of the Innovation Cathedral here.


SabGrocery
Home
Vegetables
Fruits
Meat & Seafood
Grains
Cart
Deals
Vegetables
Fruits
Meat & Seafood
Grains
DEALS
Save 20% on min-purchase of Rs.149 on Vegetables/>
Add Coupon
Save 10% on min-purchase of Rs.179 on Fruits/>
Add Coupon
Save 15% on min-purchase of Rs.199 on Meat/>
Add Coupon
VEGETABLES
Organic Carrot
Price : Rs.99/250grams
Qty:
250grams
500grams
750grams
1000grams
Buy Now
Organic Onions
Price : Rs.119/250grams
Qty:
250grams
500grams
750grams
1000grams
Buy Now
Organic Greenpapper
Price : Rs.49/250grams
Qty:
250grams
500grams
750grams
1000grams
Buy Now
Organic Tomatoes
Price : Rs.69/250grams
Qty:
250grams
500grams
750grams
1000grams
Buy Now
Organic Cabbage
Price : Rs.79/250grams
Qty:
250grams
500grams
750grams
1000grams
Buy Now
Organic Chilli
Price : Rs.159/250grams
Qty:
250grams
500grams
750grams
1000grams
Buy Now


For productivity on a Mac, there isn't a tool I rely on more than Alfred, the Spotlight replacement that does so much more. I use Alfred to search, launch applications, find files, do math, and put my computer to sleep.
If you pay Alfred's one-time "PowerPack," you also get the ability to add custom extensions to Alfred, called workflows. I downloaded and programmed different workflows, curating a list of shortcuts and powerful tools that I use constantly. Take a look at my favorites, or if you trust me, download them all. Enjoy!


Intelligent Defaults
Gauge has many default options. With bare minimum required parameters set, you will get a ready-to-use gauge as shown.
To know about default parameters, checkout documentation.
In this section, basic styles of using angular-gauge directive in any application has been demonstrated. To name a few, you can apply themes, colors, thickness, styles, i18n and many more as per your business needs.
Gauge has many default options. With bare minimum required parameters set, you will get a ready-to-use gauge as shown.
To know about default parameters, checkout documentation.
We can, however set some more bits to the default code to make it more usable (readable) in our apps, like:
Thickness of gauge can be set using `thick` attribute. It takes a positive integer value.
The range of Gauge's scale can be specified using "min" and "max" attribute. The "value" attribute specifies the current value that lies between the given range is rendered on the gauge's scale.
The gauge value can be specified directly or bound to a scope variable defined in the controller. The gauge will udpate the display when the value is updated in the scope. Click the button to see its working.
It can accept any valid CSS color value.


{% extends 'layout.html' %} {% load static %} {% block layout-content %} {% if not student.payment_status|divisibleby:"4" %}
Hello, {{ student.name }}! Welcome to OTIS.
Let's get you set up by picking your units!
Follow the three steps below to get everything working.
This is the portal for {{ student.name }}, for {{ semester.name }} (their track is {{ student.get_track_display }}). {% if student.assistant %} The assistant instructor is {{ student.assistant.name }}. {% endif %}
So far they completed {{ student.num_units_done }} of {{ student.curriculum_length }} units.
{% else %}Hi {{ student.name }}, welcome back to {{ semester.name }}. You have completed {{ student.num_units_done }} of {{ student.curriculum_length }} units.
{% if student.assistant %}Your assistant instructor is {{ student.assistant.name }}.
{% endif %} {% endif %} {% endif %} {% if suggestions|length %}Your recent problem suggestions have been processed. They are listed below, with comments from staff.
{% if suggestion.source %} {{ suggestion.source }} {% else %} {{ suggestion.description }} {% endif %} {% if suggestion.reason %} — {{ suggestion.reason }}
{% endif %} {% endfor %}After submitting a problem set, the unit is marked ⏳; after instructor review, it becomes ✅. (You can access solutions in the meantime.) Units to work on are marked ▶.
Academic
|
Logistics
|
Files
|
External sites
|
Link to olympiad answer sheets. Submit these to GradeScope, unless otherwise specified. See the syllabus for full instructions.
Solutions are available immediately here so that you can read them right after completing a mock olympiad. Obviously, don't open the solutions until you've submitted! Before taking your first mock olympiad, I recommend reading the handout on olympiad strategy.
Link to short-answer forms. Submit these to GradeScope, unless otherwise specified. See the syllabus for full instructions.
{% else %}This page from {{ semester }} is now archived. Thanks for playing.
{% endif %} {% if semester.active %}Be sure to check that the time zones display correctly!
You can also open these in a new window:


The rigth way to manage in one place your banking cards or account .
If you have any question on My Bank: Goto Home


@(projectile: com.kyleu.projectile.services.ProjectileService, path: String, content: String)(implicit flash: Flash) @com.kyleu.projectile.web.views.html.layout.simple(projectile, path) {


The available hints are listed below.
| Group | Format | Description |
|---|---|---|
| Scan method | SeqScan(table) | Forces sequential scan on the table |
| TidScan(table) | Forces TID scan on the table. | |
| IndexScan(table[ index...]) | Forces index scan on the table. Restricts to specified indexes if any. | |
| IndexOnlyScan(table[ index...]) | Forces index only scan on the table. Rstricts to specfied indexes if any. Index scan may be used if index only scan is not available. Available for PostgreSQL 9.2 and later. | |
| BitmapScan(table[ index...]) | Forces bitmap scan on the table. Restoricts to specfied indexes if any. | |
| NoSeqScan(table) | Forces not to do sequential scan on the table. | |
| NoTidScan(table) | Forces not to do TID scan on the table. | |
| NoIndexScan(table) | Forces not to do index scan and index only scan (For PostgreSQL 9.2 and later) on the table. | |
| NoIndexOnlyScan(table) | Forces not to do index only scan on the table. Available for PostgreSQL 9.2 and later. | |
| NoBitmapScan(table) | Forces not to do bitmap scan on the table. | |
| Join method | NestLoop(table table[ table...]) | Forces nested loop for the joins consist of the specifiled tables. |
| HashJoin(table table[ table...]) | Forces hash join for the joins consist of the specifiled tables. | |
| MergeJoin(table table[ table...]) | Forces merge join for the joins consist of the specifiled tables. | |
| NoNestLoop(table table[ table...]) | Forces not to do nested loop for the joins consist of the specifiled tables. | |
| NoHashJoin(table table[ table...]) | Forces not to do hash join for the joins consist of the specifiled tables. | |
| NoMergeJoin(table table[ table...]) | Forces not to do merge join for the joins consist of the specifiled tables. | |
| Join order | Leading(table table[ table...]) | Forces join order as specified. |
| Leading(<join pair>) | Forces join order and directions as specified. A join pair is a pair of tables and/or other join pairs enclosed by parentheses, which can make a nested structure. | |
| Row number correction | Rows(table table[ table...] correction) | Corrects row number of a result of the joins consist of the specfied tables. The available correction methods are absolute (#<n>), addition (+<n>), subtract (-<n>) and multiplication (*<n>). <n> should be a string that strtod() can read. |
| Parallel query configuration | Parallel(table <# of workers> [soft|hard]) | Enforce or inhibit parallel execution of specfied table. <# of workers> is the desired number of parallel workers, where zero means inhibiting parallel execution. If the third parameter is soft (default), it just changes max_parallel_workers_per_gather and leave everything else to planner. Hard means enforcing the specified number of workers. |
| GUC | Set(GUC-param value) | Set the GUC parameter to the value while planner is running. |


Plants are living things. They depend on water and light to help them grow. But how do plants find what they need? They get it from the world around them!


A casual weekly meetup where we work on projects and hack open data.
An open conversation online about what we're doing now and what's next.
Code for America is the organization that helped inspire many of us that we can change our City.
We are a Code for America Brigade, which means we're volunteers that contribute our talents toward improving the way our local governments and community organizations use the web. Brigade is about action and you're here because you are someone who takes action. See what kind of things brigades do, or watch the inspirational TED talk given by Jennifer Pahlka, the founder of Code for America.
View our Meetups site for our next location and time. We meet every other Tuesday where we hack (develop) our projects, or brainstorm on current issues and activities around Jersey City, New Jersey. It's actually a lot of fun, with great people and usually food/drink.
Can't make it to a meetup? No problem. We collaborate on projects, ask for help, and post wins to our Open JC forum where you can get new posts in email and reply. We welcome anyone to sign-up... you might just see something you're interested in helping with.
Our Brigade Organizers are Anna Lukasiak<EMAIL_ADDRESS>or @adlukasiak) and Stephen Musgrave<EMAIL_ADDRESS>or @stephenmusgrave) and we want to hear from you!


Organisations like us need is totally dependend on your donations. To support us simply send money to one of the mentioned checking bank accounts which suits you best
Payoneer Email<EMAIL_ADDRESS>You can pay us directly through Western Union, Money Gram. Contact us for details.


Pair programming is done to complete an objective between two people that allows for collaborative learning from each other's practices.
Pair programming also prepares us for being developers in the real world, as pairing is a common practice to complete tasks. It is also a great way to learn from each other.
The navigator acts as the guide in a coding challenge to help the driver complete a task. The driver is in control of the keyboard and is moving through the task.


| Figure 1 |
The five climate regions of Madagascar. |
| Figure 2 |
The target districts for the assessment of climate and healt ... |
| Figure 3 |
Observed trends of ( a) malnutrition in the city of Antanana ... |
| Figure 4 |
Observed trends of ( a) diarrhea in Antsiranana and ( b) ARI ... |
| Figure 5 |
Projected trends of ( a) Malnutrition in Antananarivo and ( ... |
| Figure 6 |
Projected trends of ( a) ARI in Farafangana and ( b) Diarrhe ... |
| Figure 7 |
Vulnerability ( a) and exposure ( b) of regions in Madagasca ... |
| Figure 8 |
Sensitivity ( a) and adaptive capacity ( b) of regions in Ma ... |


|
Velocity Tools
Generic Tools
Tool Documentation
Other Subprojects
|
|
MathTool Reference Documentation
|
| |
Tool for performing floating point math in Velocity.
A few things to note:
- Most methods return numbers wrapped as Double
which automatically render the decimal places even
for whole numbers (e.g. new Double(1).toString() -> '1.0').
This is intentional. This tool is for floating
point arithmetic. Integer arithmetic is already supported
by the Velocity template language. If you really need '1'
instead of '1.0', just call intValue() on the result.
- No null pointer, number format, or divide by zero
exceptions are thrown here. This is because such exceptions
halt template rendering. It should be sufficient debugging
feedback that Velocity will render the reference
literally. (e.g. $math.div(1, 0) renders as '$math.div(1, 0)')
- Class
java.lang.Math is used to perform the
mathematical operations.
| Class |
| | org.apache.velocity.tools.generic.MathTool |
| Name |
| | $math (this is the recommended name of the tool in
the Velocity context) |
| Toolbox Configuration Example |
| | <tool>
<key>math</key>
<scope>application</scope>
<class>org.apache.velocity.tools.generic.MathTool</class>
</tool> |
| Author(s) |
| |
Nathan Bubna
|
- Method Overview
-
|
|
add()
|
| |
Addition
Double add(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
Operands of the addition. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the sum or null if the input
paramters are not valid.
|
|
sub()
|
| |
Subtraction
Double sub(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
Operands of the subtraction. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the result of the subtraction
or null if the input paramters are not valid.
|
|
mul()
|
| |
Multiplication
Double mul(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
Factors of the multiplication. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the result of the multiplication
or null if the input paramters are not valid.
|
|
div()
|
| |
Division
Double div(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
Input for the division. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the result of the division
or null if the input paramters are not valid.
|
|
pow()
|
| |
Power of
Double pow(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
Operands. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the first number raised to
the power of the second or null if the input paramters are not valid.
|
|
max()
|
| |
Maximum of two numbers
Double max(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
Operands. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the maximum of the two
numbers or null if the input paramters are not valid.
|
|
min()
|
| |
Minimum of two numbers
Double min(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
Operands. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the minimum of the two
numbers or null if the input paramters are not valid.
|
|
abs()
|
| |
Absolute value of a number
- Parameters
-
- num
-
Operand. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the absolute value of the
input or null if the input paramter is not valid.
|
|
toDouble()
|
| |
Converts a number into a double.
Double toDouble(Object num)
|
- Parameters
-
- num
-
Operand. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the input number or
null if the input paramter is not valid.
|
|
toInteger()
|
| |
Converts a number into an integer
Integer toInteger(Object num)
|
- Parameters
-
- num
-
Operand. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Integer representing the input number or
null if the input paramter is not valid.
|
|
roundTo()
|
| |
Rounds a number to the specified number of decimal places
Double roundTo(Object decimals, Object num)
|
- Parameters
-
- decimals
-
The number of decimal places. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- num
-
The number to round. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Double representing the input number
rounded to the specified number of decimal places or
null if the input paramter is not valid.
This method is particulary useful for simple display formatting.
If you want to round an number to the nearest integer, it
is better to use method roundToInt() ,
as that will return an java.lang.Integer rather than
a java.lang.Double .
|
|
roundToInt()
|
| |
Rounds a number to the nearest whole Integer
Integer roundToInt(Object num)
|
- Parameters
-
- num
-
The number to round. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Integer representing the input number
rounded to nearest whole Integer or null if the input paramter is not valid.
|
|
getRandom()
|
| |
Returns a pseudo-random number
- Returns
-
A
java.lang.Double
greater than or equal to 0.0 and less than 1.0.
|
|
random()
|
| |
Returns a pseudo-random number in a configurable range
Integer random(Object num1, Object num2)
|
- Parameters
-
- num1, num2
-
First and last number of range. Valid input is any number (primitive
types or objects, Velocity automatically converts primitives types
to objects) or a string representation of a number.
- Returns
-
A
java.lang.Integer greater than or equal to the first
number and less than the second number or null if the input paramter
is not valid.
|
|


Stunning photo shows lightning bolt striking an erupting volcano in Guatemala
by Madeline FarberA photographer in Guatemala captured the stunning moment a bolt of lightning hit a volcano as it was erupting.
Astrophotographer Sergio Montúfar told SWNS, a British news agency, that he hiked up to the volcano —Volcán de Pacaya in Villa Canales — because the forecast predicted clear skies. But as he neared the top, the weather was a bit dicier than he expected.
STUNNING IMAGE OF RARE VOLCANIC LIGHTNING CAPTURED BY GERMAN PHOTOGRAPHER: 'IT WAS A SCARY MOMENT'
"I was there to do astrophotography of Volcán de Pacaya which has rivers of lava, I wanted to get the milky way over Volcán de Pacaya but the terrible storm didn't let me,” he recalled. "We expected clear skies, but that never happened and we got caught by the rain.”
But the storm didn’t deter Montúfar, who decided to capture the events. Moments later, a bolt of lightning hit the top of the volcano, creating the perfect shot for the experienced photographer.
“I have never seen so many lightning strikes coming from the top of Volcán de Agua,” he added, noting the event was “life-changing.”
Montúfar continued: “It taught me not to be negative under some situations because I was angry about the storm, but I never expected it to be this amazing storm."
The striking shot comes after a German photographer who traveled to a remote Russian island over the summer in the hopes of capturing volcanic lightning got what he wished for, capturing stunning images of volcanic lightning at the Ebeko volcano.
"It was strong enough to illuminate the whole sky with its bluish lighting,” he said at the time.


Or this mutex is called inside a LOCK ... that wil be much ahrder to fix
jl777c09-Jan-19 01:42 PM
the mutex and lock should operate independently
blackjok3r09-Jan-19 01:42 PM
I'm dont know... the mutex is what stops it... not sure if thats 100% accurate but the backtrace is identical on every node that halted
jl777c09-Jan-19 01:43 PM
then something inside the mutex is calling the same mutex
not good at all
blackjok3r09-Jan-19 01:44 PM
ok... I have 8 threrads all waiting on cs_main those all say cs_main is held by this thread, and this thread stops on the mutex. By computer frozxe so I lost the debugger, guess I can just read some code for now and see fi I can find anything(edited)
…e miner lock to something safer. Add lock cs_main to import validation when accepting to mempool.
I think this fixes it all.. I will test it first to make sure adding transaction fee works.
Need to retest staker with these changes also.(edited)
blackjok3r09-Jan-19 07:24 PM
@LabsAssistant
Sorry about this, but we also have an important update for StakedChain/komodo. This should fix all issues with migrates that were left. I have changed it so that we use the standard komodo transaction fee for imports of 0.0001 coins. This means you pay 2x this amount one for burn tx and one for import. There is nothing stopping you taking the fee out in the code, if you wish to do so, however blocks will only be maximum 2MB if everyone does this during the stress test.
We also bring down all the major bug fixes from the last few days. These are mandatory to update in a day or two or you risk forking chains, including KMD. We need to create a PoS chain and test this... Although I might do this locally first so save wasting everyone's time if my fix is no good. Nothing bad can happen for PoW chains, infact they should work better than before. :)
A simple start.sh was enough to update my notary. Staked repo nodes, will need to stop their daemons manually first.
Thanks for all of your patience. I think this is finally close to stable. Please report any strange behaviour you find.
4
3
2
1
1
dukeleto09-Jan-19 08:20 PM
I want to throw KMD at somebody and they help me/Hush maintain the Hush insight explorer at https://explorer.myhush.org/ (which is down, luzl). I don't need a server, I need smart people to maintain insight, keep it updated, and help me make tiny changes to it, without breaking the world. Is this something that LABS can help with? If not LABS, who?
1
NutellaLicka09-Jan-19 10:28 PM
Why the need for a btcpubkey? I can't start the chains without one?
Planned for a mining node
ComputerGenie 👴👴👴09-Jan-19 10:54 PM
@NutellaLicka your NN need pubkey to know to sign tx with that addy
not needed for mining node
NutellaLicka09-Jan-19 10:55 PM
Yeah I'm on the /staked/ repo and it is requiring a btc pub key to start the chains. I've added the kmd key in there
ComputerGenie 👴👴👴09-Jan-19 10:56 PM
genie@StakedNotary:~$ cd StakedNotary
genie@StakedNotary:~/StakedNotary$ ./listassetchainparams.py
will give you exactly the info you need to run mining node
repo for using staked chains, for testing and production use - StakedChain/staked
ComputerGenie 👴👴👴10-Jan-19 12:37 AM
Not sure why you'd want all that, but whatever works for ya (me I just use the daemon and go on)
NutellaLicka10-Jan-19 12:48 AM
I'm not familiar with all facets of labs just yet, so went with what was recommended. I'll have to have a play around a bit more when I get home. I just read about komodos scaling solution and am excited to help with this test
CrisF10-Jan-19 01:39 AM
The pubkey in the config.ini is the KMD pubkey. From the KMD address and priv key. They are all the same address.(edited)
You can also use the noconfig version that Blackjok3r mentioned yesterday, or from staked/komodo/master . /komodo-cli - ac_name=CFEKX
1
@NutellaLicka
blackjok3r10-Jan-19 02:50 AM
The readme had instructions to start the daemon without pub key
Sure its there
I use it for mining nodes
And explorer nodes
While genies solution is fine, when we start running multiple branches for different chains it will become a lot harder to manage.
gt10-Jan-19 04:07 AM
what needs to be in the rpcport conf file for the migrate script
various scripts we have developed on STAKED so far, none of these are perfect and some might not even work. use them as examples of what you can do. - StakedChain/PoS_scripts
gt10-Jan-19 04:26 AM
hmm i was using that one
blackjok3r10-Jan-19 04:26 AM
Like I said I havent used it... What its doing it pulling them from the ~/.komodo/CFEKX/CFEKX.conf
The daemon generates that file automatically with everything needed.
for KMD it does not.... the buildkomodo.sh script does it
gt10-Jan-19 04:27 AM
will look at again in a bit
Alright10-Jan-19 04:39 AM
@gt what conf file do you mean?
gt10-Jan-19 05:18 AM
rpcport not in conf file, exiting
check /home/gt/.komodo/komodo.conf
Generates a new R address, wif and pubkey, and populates them into the config.ini file.
1
blackjok3r10-Jan-19 06:23 AM
merged... you can use the setpubkey RPC now though... so the config.ini is kind of irellavent ... just havent got to changing it all over.
This works though.
smk762 - dracocanis ominator10-Jan-19 06:39 AM
man... I keep making stuff that's superseded by the time I get there. Pretty basic though...
work's offered to fund some courses for me to cover the hours I put in to the flir2qr project. any recommendations? Cant find anything I wouldnt be able to figure out on stack exchange etc.
and all the other courses I've done I tend to bail on after learning the bit I need for whatever project I'm on.
certification would be noice tho...
was looking at codeacademy for python but not sure I wont get bored and start doing my own thing
any decent C++ courses out there?
blackjok3r10-Jan-19 06:54 AM
Yeah no idea... I never found courses to be any good either. When i did the cert 3 in IT at tafe... I used to go there 2H late every day to avoid the ticket collectors at the train station, and stay for like 1H then convince everyone to go to the pub ... Finished with 100% marks... Did most of the work at home... Super easy and boring lol.
smk762 - dracocanis ominator10-Jan-19 07:25 AM
Yeah.
Learn more here just trying things out
blackjok3r10-Jan-19 07:27 AM
yep
blackjok3r10-Jan-19 07:58 AM
I think I'm getting somewhere with this staker ... but 100,000 utxos is just too many for it
Need to start again
smk762 - dracocanis ominator10-Jan-19 09:17 AM
dog. gone. again.
gps. flat.
bastard!
2
Alright10-Jan-19 09:19 AM
smk762 - dracocanis ominator10-Jan-19 09:30 AM
I'm waiting for a spare battery to arrive, tracking had it in sydney two days ago...
he's chipped and collar has my number on it, but he's not easy to catch. Should make it back when he's ready,just hope he stays off the roads
3
blackjok3r10-Jan-19 09:36 AM
My dog has been doing that latley too... has no collar atm, but is chipped... Always came back, I think he just walks himself around the block though lol.. Not off on grand adventures like your dude.
smk762 - dracocanis ominator10-Jan-19 10:04 AM
yeah tracking led me to where the battery went flat, and he sure likes to range a fair stretch. once he hits the river he's near impossible to find, but at least there's no cars. Not sure how he'd respond to snakes tho... dont think he'd chase them but you never know
2
ComputerGenie 👴👴👴10-Jan-19 10:58 AM
While genies solution is fine, when we start running multiple branches for different chains it will become a lot harder to manage.
When a miner opts to mine such divergent things, s/he should know wtf s/he's after, imo(edited)
As someone with just about 1TB of chain data, I can tell you that mining every chain just because they are there isn't all it's cracked up to be(edited)
1
smk762 - dracocanis ominator10-Jan-19 11:43 AM
well, at least the lost dog forced me to implement location based timzone offset via API. tracker went dead at 12:41pm, about 7 hrs ago
blackjok3r10-Jan-19 12:03 PM
Damn batteries.... maybe some thing that make power when you shake it so while he runnign around he carges up his prison.
Just keep finding more bugs here ... I almost have the PoW flag setting... This will help preformance and allow the staking script to work a lot easier, and also deal with PoW mined blocks, for its segid distribution.
There is also a wallet bug, that when you load the daemon it thinks transactions are expired and (either deletes them in our case, due to my wallet repair code) or does not load them to the runtime wallet.... which could lead to lost funds.(edited)
They are not gone.... but they appear gone.
smk762 - dracocanis ominator10-Jan-19 12:08 PM
yeah I had some crazy ideas of how to make the other pouch a power generator. efficiency is likely minimal, but better than nothing
and I have to balance the pouches anyways
do funds come baku?
ComputerGenie 👴👴👴10-Jan-19 12:09 PM
which could lead to lost funds.
If it does, wouldn't a zap fix it?
blackjok3r10-Jan-19 12:09 PM
BAHSHAHAHA when I fixed this... it hard forked my chain Well it looks liek this fix cant be pushed upstream... MGNX will die.... again
I'm not sure Genie... I havet got there yet... its simple enough to change ... just add flag, that on wallet load it does not check for tx expirty from wallet.
 I guess it might be me ... Where it was trying to set this flag I can never do so... .So I found where it actually checks PoW and tried to set the flag there... and now it does not sync.
I made 112,000 utxo earlier and tried to stake them with the ram staker ... maxed one core to 4.4Ghz and took more than 3 minuites to run the loop ... couldnt find a single block.
I will start a new chain I guess and try again with this fix... the code seems right... its just that the PoS % was wrong before, because it couldnt count PoW blocks
ComputerGenie 👴👴👴10-Jan-19 12:19 PM
I could almost swear that someone has been saying that for months now....
blackjok3r10-Jan-19 12:27 PM
Yeah I was sure that was all fixed in POSTEST
no matter at least I found it now
I wonder if my fix will work though lol
smk762 - dracocanis ominator10-Jan-19 12:30 PM
dog found!
he cant get back in, stuck in a drainage easement
had to help him dig a hole under the gate
5
he';s pretty proud of himself... and stinks of river


[t]Company exists[/t]
[t]You have tried to subscribe your company but your account already exists. Please use the button beneath to retreive your login details.[/t]


A macro can call another macro then continue running when the nested macro returns. The nested macro can be run a number of times allowing for a primitive form of loop. A nested macro may call another nested macro, and there is no limit to the number of nested calls.
To call a nested macro you must first record the called macro and save it to disk (see How Do I Save a Macro?). If the nested macro is to be run more than once during playback then set the default number of replays to the desired value. The names of nested macros should usually start with an underscore so that they are not normally displayed in the list of macros that can be played (see Replay Macro dialog). You might also like to mention in the "Comments" section of the Save Macro dialog that this is a nested macro and the name of the macro that calls it.
Once you have created and saved the nested macro you can create the macro that calls it. At any time while recording you can play a macro using the Play Macro command, and the playing of this nested macro will be recorded. Note that, the Replay Macro dialog is slightly different during recording in that you cannot change the number of replays (which is taken from the nested macro file itself - see above), and you can see macro files with leading underscores in the drop-down list of macros.
You will probably then want to save the (outer) macro to a macro file, using a different name to the nested macro, of course. In the associated comments you should probably mention the name of the called macro, so that if the .HEM macro files is moved or given to someone they know what other file(s) are needed.


-
Which is not a data type?
Undefined
Strings
Defined
-
What does "10===9" return on the JS console?
Nan
True
False
-
Which option represents the method concat()?
"x"+"y"
'y'*'x'
"x/y"
-
Select the correctly declared variable.
var mYschool = ["moringa", "andela", "iHub"]
var herFruits = ["apple","orange","peach"]
var HisNames = ["ngure", "boro", "chrispus"]
-
Which method inserts text into the bottom of a list?
.prepend ( )
.append ( )
.slideDown ( )


Unable to assign project.
Enter a project number or project name
Select
Assign
20
assigned projects
Project number
Project name
Lead organisation
Remove
Remove


--- layout: post tags: [AutoFixture] date: 2009-04-27 17:42:07 UTC title: "Replacing AutoFixture's Default Algorithms" --- {% include JB/setup %}
Several times in my previous AutoFixture posts, I've insinuated that you can change the algorithms used for creating strings, numbers and so on, if you don't like the defaults.
One way you can do this is by simply using the Register method that I introduced in my previous post. Let's say that you want to replace the string algorithm to simply return a specific string:
fixture.Register<string>(() => "ploeh");
No matter how many times you'll call CreateAnonymous<string> on that particular fixture object, it will always return ploeh.
The Register method is really only a type-safe convenience method that wraps access to the TypeMappings property. TypeMappings is just a Dictionary of types mapped to functions. By default, the Fixture class has a set of pre-defined TypeMappings for primitive types such as strings, numbers and booleans, so you could access the function used to generate strings by indexing into this Dictionary with the System.String type.
Equivalent to the above example, you could alternatively replace the string algorithm like this:
fixture.TypeMappings[typeof(string)] = s => "fnaah";
Instead of using the Register method, I here assign a lambda expression directly to the key identified by the System.String type. This is what the Register method does, so the result is exactly the same.
However, you may have noticed that by accessing TypeMappings directly, the signature of the function is different. The Register method takes a Func<T>, whereas the TypeMappings Dictionary expects a Func<object, object>. As you can see, the Register method is more type-safe, but the TypeMappings Dictionary gives you a chance to utilize the optional seed that one of the CreateAnonymous overloads takes.
You could, for example, do this:
fixture.TypeMappings[typeof(string)] = s => string.Format((string)s, new Random().Next(100));
Although this particular algorithm has a built-in weakness (can you spot it?), we can now use the seed to provide a format string, like this:
string result = fixture.CreateAnonymous("Risk: {0}%");
which will yield a result like Risk: 32%.
When I designed the extensibility mechanism for AutoFixture, I seriously considered defining an interface that all TypeMappings had to implement, but I ended up preferring a Func<object, object> instead, since this allows you to redefine a particular algorithm inline in a test by using an anonymous delegate or lambda expression, and you can also reuse an existing algorithm, as long as it fits the signature.
Comments


Recipe
Shopping List
New Recipe
Please select a Recipe!
{{recipe.name | uppercase}}
{{recipe.description}}
{{selectedRecipe.name | uppercase}}
{{selectedRecipe.description}}
{{recipeIngredient.ingredient.name}} - {{recipeIngredient.amount}}
Delete
{{message}}
Name:
Image Url:
Description:
Save
Cancel
New Ingredient
{{message}}
Name:
Add Ingredient
Cancel
Update
Delete
Cancel
{{ingredient.name | uppercase}}


Sensex rises 42 points; bank, auto stocks shine
The 30-share BSE Sensex stabilised in afternoon trade and settled with gains of 42.28 points or 0.10 per cent at 40,487.43.
by PTIMumbai: Market benchmark BSE Sensex rose over 42 points on Monday to close at 40,487.43, driven by buying in select bank and auto counters.
After opening on a weak note, the 30-share BSE Sensex stabilised in afternoon trade and settled with gains of 42.28 points or 0.10 per cent at 40,487.43. The index swung between a high of 40,645.63 and a low of 40,336.56 during the day.
The 50-scrip NSE Nifty closed 16 points or 0.13 per cent higher at 11,937.50.
Among the Sensex stocks, HDFC emerged as the top gainer, rising by 2.06 per cent, followed by Axis Bank, Maruti, Reliance, Power Grid and Tata Steel.
On the other hand, TCS, HCL Tech, L&T, IndusInd Bank, Tech Mahindra, SBI and ITC lost up to 2.93 per cent.
Sectorally, BSE Energy index rose the most by 1.06 per cent, followed by oil & gas and auto.
BSE IT and realty indices led the losers' chart.
Brent futures, the global oil benchmark, fell 0.81 per cent to USD 63.87 per barrel.
Asian stocks were mixed as investors turned more cautious over US-China trade deal uncertainty amid strong US jobs data and weak Chinese exports numbers.