@(form: play.api.data.Form[utils.utilities.EasierSolarForm], settings: utils.templates.TemplateSettings)(implicit request: play.api.mvc.Request[AnyContent], configuration: play.api.Configuration)
@views.html.headers.get_quotes_main_test("Get Easier Solar Quotes") {
@views.html.navbar_header()
Is Solar Right for Me? At Easier Solar, we help homeowners to determine if solar makes sense for their home. When it does, we offer an independent comparison of both leading national providers and local installers completely free. Whether you are a fit comes down to three factors, location, power usage, and sun exposure. Of those three, the most important factor is where you live.
If your state is green in the map below, it is very likely you are a fit for solar and you're able to save a substantial amount on your power today. To make things easier, the government is handing out billions of dollars to encourage homeowners like you to adopt this transformational technology.
That's it, seriously
Solar is a practical power solution that reduces power costs considerably, while protecting you from unpredictable cost increases for decades. It's no surprise the industry is exploding, almost doubling every year. The reason it is growing so fast is that solar isn't an expensive source of power that only makes sense for environmentalists anymore, thanks to a 73% decrease in panel costs since 2007 and government programs that cover at least 30% of system costs. There is no other product in the market like that.
Want to explore your options? Easier Solar lets you see exactly how each purchase option compares to buying power from the grid. With a PPA you can immediately save about 20% off of your power bill with little to no upfront costs. You then lock in cheap, clean electricity for 20 years.
What are my options?  Solar PPA plans offer the easiest path to solar. PPA stands for Power Purchase Agreement, it means a third party owns the panels and the only thing you pay for is power. If there are ever any issues with the system, it will be fixed at no cost to you. Plans typically price the power about 20% below your current (mostly fossil fuel) power costs.
Explore available products online, or have a conversation with an Easier Solar Advisor to learn more. States marked in green typically offer savings in excess of 20% for homeowners.
See If You Qualify


[Update: Live] Google Stadia hosting Reddit AMA before launch
by Abner LiStadia is launching in under two weeks on Tuesday, November 19. Ahead of that, Google is hosting another Reddit AMA next week to “help answer any questions you may have before launch.”
Update 11/13: The Stadia AMA is now live on Reddit. In addition to Director of Product Andrey Doronichev, the session includes Stadia’s head of publisher experience Beri Lee answering questions.
This “Ask Stadia Anything” session on Wednesday, November 13, will see Director of Product Andrey Doronichev and “some friends” address questions before the launch six days later. This Stadia Reddit AMA starts at 10 a.m. PT, but the post is not yet available.
It increasingly looks like Google will not host another Stadia Connect livestream before Founder’s Edition starts shipping. This looks to be the final opportunity to ask the team questions and get other clarifications about the day one experience.
Google this morning released the Stadia app for Android and showed off more of the interface. Next week’s event could coincide with more videos about what to expect on launch day. Pressing details that remain include what titles will actually be available to purchase. A popular question will also deal with how Google is handling shipping and confusing delivery dates.
The last community-focused event was on July 18 and revealed such details as the Stadia Controller not supporting Bluetooth audio at launch, and how Google does not view Stadia Pro as Netflix for games.
More about Stadia:
- [Update: More prototypes] Made by Google talks design process behind Stadia Controller
- Nest Wifi’s new ‘Gaming preferred’ prioritization for Google Stadia detailed
- Stadia Games and Entertainment seeking to open studios in London and Tokyo
- Google talks native Stadia games, minimizing latency, and roadmap in deep dive [Video]
FTC: We use income earning auto affiliate links. More.


We welcome translations for the lessons in this curriculum!
There are translations folders which contain the translated markdown files.
Note, please do not translate any code in the code sample files; the only things to translate are README, assignments, and the quizzes. Thanks!
Translated files should follow this naming convention:
**README._[language]_.md**
where [language] is a two letter language abbreviation following the ISO 639-1 standard (e.g. README.es.md
for Spanish and README.nl.md
for Dutch).
**assignment._[language]_.md**
Similar to Readme’s, please translate the assignments as well.
Quizzes
Add your translation to the quiz-app by adding a file here: https://github.com/microsoft/Web-Dev-For-Beginners/tree/main/quiz-app/src/assets/translations, with proper naming convention (en.json, fr.json). Please don’t localize the words ‘true’ or ‘false’ however. thanks!
Add your language code to the dropdown in the quiz-app’s App.vue file.
Edit the quiz-app’s translations index.js file to add your language.
Finally, edit ALL the quiz links in your translated README.md files to point directly to your translated quiz: https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/1 becomes https://nice-beach-0fe9e9d0f.azurestaticapps.net/quiz/1?loc=id
THANK YOU
We truly appreciate your efforts!


Go Back
Simple Form
Your email
What's your favorite ice cream flavor?
Vanilla
Chocolate
Can I get your number?
Message
Yes, I'm not a robot
Button Submit
Button Reset
Inputs
Label
Label
Label
Label
Label
Label
Numeric
Select your favorite number
Select your favorite number
Select dropdowns
What's your favorite ice cream flavor?
Open this select menu
Vanilla
Chocolate
Can I get your number?
What's your favorite ice cream flavor?
Open this select menu
Vanilla
Chocolate
Can I get your number?
What's your favorite ice cream flavor?
Open this select menu
Vanilla
Chocolate
Can I get your number?
Search
Search Example
Search Example
Datalist
Datalist example
Datalist example
Checkboxes
Checkbox foo
Checkbox bar
Indeterminate checkbox
Disabled checkbox checked
Disabled checkbox
Radios
Radio foo
Radio bar
Disabled radio checked
Disabled radio
Link
Button
Send an Email
Button disabled
Send an Email disabled
Button
Button
Submit
Button disabled
Submit disabled


Table of Contents
- Building & Running
- General
- Members & Opcodes
- Members
- Opcodes
- Agent
Note: Some screenshots may be outdated, but even if that's the case they should convey the point well enough to still be relevant. If something major changes, they get replaced... eventually.
Note: Another important info bit, the features page will probably be updated more often than this, so check that page out too.
Building & Running
Building
Building requires maven. If you do not have maven installed you can follow this tutorial.
Recaf can be built by executing mvn package. All dependencies but one should be available on the central maven repository. The others are provided in the "dependencies" folder. Installing them is not required.
Running
Once Recaf has been built it can be executed by:
- java -jar target/Recaf-{$version}-jar-with-dependencies.jar
- java -cp target/Recaf-{$version}-jar-with-dependencies.jar me.coley.recaf.Recaf
- Double clicking Recaf-{$version}-jar-with-dependencies.jar me.coley.recaf.Recaf in the target folder (Created after build).
Alternatively, you can check for the latest release to download a zip file containing Recaf. See above for running the jar.
General
Opening Programs
Recaf supports the modification of java programs as single class files and java archives (JAR). To load a program in recaf use the navbar to select "File->Open". In the file prompt select the file you wish to edit and click "open". After a second or two, the top level packages of the classes in the opened jar should appear on the menu on the left.
Alternatively, you can drag and drop your jar/class file onto the left menu.
Saving Changes
To save changes to a java program use the navbar to select "File->Save".
Navigating Programs
When you open your program in Recaf, the top level packages are visible. To expand packages click the arrow next to their names or double click them. Navigation using the arrow keys is also supported.
To open a class (Indicated by the green icon for classes, blue icon for interfaces, and brown icon for enums) double click on the item. This will open the class in the main section of the GUI. If you open multiple classes you can switch between them by clicking the tabs on the top of the section. To close a tab middle click it (press the scroll wheel).
Changing Settings
All options are available in the options panel on the navigation bar.
User Interface
| Option name | Description | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Show jump hints | Displays inline hints for what jump opcodes do. For example IF_ACMPEQ: ($1 == $0 -> offset) shows that the opcode checks for the equality of the values at the top of the stack ($0) and one from the top ($1). If they are equal it jumps to the offset defined by the opcode. | ||||||||||||||||||||||
| Simplify type descriptors | Removes package names to make opcode displays more compact. For example java/io/File becomes File. | ||||||||||||||||||||||
| Advanced variable table | Shows the signature(Type with generics) value of local variables. This makes the table display cleaner | ||||||||||||||||||||||
| Confirm deletions / exit | If enabled removing members/opcodes and attempting to close Recaf will show a warning dialog which will let you cancel the action. | ||||||||||||||||||||||
| Show empty member windows | If you open a class and it has no fields/methods this option will hide the field/method window; Reduces clutter. | ||||||||||||||||||||||
| Show uncommon attributes | If unchecked the following class attributes will be hidden:
|
||||||||||||||||||||||
| Default opcode click action | The vaue of this textfield represents what action to execute when middle-clicking an opcode. By default middle clicking an opcode opens the edit window. The actions are the translation keys for the menu items (The language json will include an up-to-date list) Potential values include:
|
||||||||||||||||||||||
| Default method/field click actions | The vaue of these textfields represents what action to execute when middle-clicking a method/field. For methods the default action is opening the opcodes. For fields it is editing the definition. The actions are the translation keys for the menu items (The language json will include an up-to-date list) Potential values include:
|
||||||||||||||||||||||
| Language | The language to show the GUI in. Potential values are dependent on which language files are located in Recaf's resources/lang directory | ||||||||||||||||||||||
| Look and feel | The window theme to use when rendering Recaf. Nimbus is reccomended since that is what the layout is based off of. Additionally you can add to this list by creating a plugin for Recaf. An example of adding a LAF can be found here. | ||||||||||||||||||||||
| Menu order | These menus control the order of items displayed in the context menus for opcodes and methods(The menus that appear when you right click an item). To move an item, select it and click the arrow buttons. If you wish to hide an item from display you can delete it in the rcinterface.json config file. |
ASM Flags
| Option name | Description |
|---|---|
| Expand frames Input | This option is for java 6 compatibility. It can be turned off for java 7+ input (Interpretation of ASM's docs) and doing so will result in a slight performance boost. |
| Skip debug Input | Skips debug information like line numbers and source-file attributes. |
| Skip frames Input | Does not parse frames from input files. ASM can regenerate frames when you save your jar so this option can safely be disabled if the "Compute frames" output flag is checked. |
| Skip code Input | Skips method code parsing from input files. Methods still are read but only their definition is loaded. |
| ASM version Input/Output | The version for ASM to use when loading/saving files. Typically the highest value should be selected but if you are injecting recaf into another java process with an outdated ASM library already loaded into the classpath setting this to something lower is recommended.(When injecting the default V6 will be used so you will have to inject once, fix the setting, restart the process and inject again. Options are based on the host process's directory so this value cannot effectively be passed to the attach thread.) |
| Compute frames Output | Recalculates frames needed for proper bytecode verification when you save your changes. This should always be enabled unless you're exporting to java 6 or below. |
| Compute maxs Output | Recalculates the max stack/local variable size of methods. This flag is implied by "Compute frames" so it does not need to be checked. |
Searching
There are multiple search options that are all accessible through the search menu on the navigation bar. Clicking one of the options will open will open a page with inputs, search button, and a results tree. Alternatively if you have the member that you wish to search for open in recaf already, you can right click it and select "Find references". This will bring up the search menu with all the fields filled out, and the search results already computed.
| Search Option | Fields | Description |
|---|---|---|
| Strings |
|
There are multiple types of string searches. For "Case-(in)sensitive" types searching checks for containment of the input text. "Exact" checks for exact case-sensitive matches. If a string contains the result but is not equal to it it will not be shown in the results. "Regex" is similar to "Exact" but the results shown are based on the successful match of the given input pattern. |
| Constants |
|
Searching for constants checks the value of final fields(using their "DefaultValue" attribute), constant value opcodes(Like ICONST_1, FCONST_0, etc.), integer opcodes (BIPUSH, SIPUSH, etc.), and ldc values. Input is expected to be numerical. |
| Fields |
|
This search will find any field belonging to any class that contains the given name and type descriptor (desc). If "Exact" is checked the search uses equality instead of containment for results. |
| Methods |
|
This search will find any method belonging to any class that matches the given name and type descriptor (desc). If "Exact" is checked the search uses equality instead of containment for results. |
| Classes |
|
This search will find any classes that contain the given input text. If "Exact" is checked the search uses equality instead of containment for results. |
| References |
|
All inputs in this search are optional. For example if you want to find all List fields in a program you would put Ljava/util/List; in the descriptor input and click search. Another case would be finding all references to a class for which you would only enter the class name in the owner field. If "Exact" is checked the search uses equality instead of containment for results. |
Members & Opcodes
Modifiers / Access
In java all classes, fields, and methods have certain sets of modifiers that can be applied to them (Here is a helpful resource on what each modifier does) which dictate what can access them. The most common is public. Most of these modifiers are visible for fields and methods when they are shown in the class panel. The list of visible modifiers is:
- Abstract:
- Final:
- Native:
- Static:
- Synthetic:
- Transient:
- Volatile:
- Default:
- Private:
- Protected:
- Public:
To edit a class's modifiers, open the class and click the "Edit Access" button. For fields and methods, open the class they belong to and right click on them in the appropriate window. This will bring up a menu. From this menu click "Edit Definition". This will bring up a new window with a few different sections. The part for editing modifiers is the box containing checkboxes. Simply click the checkboxes to update the modifiers.
Definitions
To edit member definitions you can right click a member and select "Edit definition". This will being up a window with all the values a member has that can be modified. For methods with try-catch blocks, those are in a separate window since they expand the panel size by a lot.
Editing
To edit a method's opcodes, open the containing class and look for the method in the methods window. Right clicking it will open a menu. On this menu select the "Opcodes" option. This will open a new window with the method's opcodes. To edit any specific opcode, right click it and select the "Edit" option.
Some opcodes will have more properties than others. For example editing an InvokeVirtual opcode will show you the method invoke's owner, name, descriptor, and a few more things. Editing an Aload will show you the variable index being loaded.
Inserting / Deleting
The right-click menu lets you also insert new opcodes. The insertion window is similar to the edit window, but with a few changes. The major differences are the combo-box which switches between opcode types, and the button that inserts the new opcode.
Deletion is also an option in the menu. If you wish to delete multiple opcodes, you can hold control and pick the rest individually, or you can hold shift to select a range. Right clicking with multiple opcodes selected will not remove the selection (Right clicking move the selection if only one opcode is selected for convenience).
A complete listing of the ASM's opcode design can be found here. This page lays out how ASM handles abstraction of the opcodes from the standard constant-pool based design as specified in the class file specs.
Highlighting
When viewing methods you will probably come across with opcodes displayed as "label somevalue". If you select the label, other opcodes that reference it will be highlighted yellow. These will typically be jumps and switches. Sometimes there will be no references. This does not mean its existence is pointless; it could be used by a try-catch block (Which are attributes of the method, and thus cannot be explicitly highlighted).
Additionally selecting jumps will show you their jump destinations. For instance, an IfNull opcode will highlight the the next opcode red (Condition fails) and the destination green (Condition passes). The same scheme applies for switches but the switch destinations are yellow, while the default key is highlighted red.
Blocks
If you have some bytecode that is handy or tedious to re-create you can select a range of opcodes (Shift-click from start to end, or control-click each opcode) and save it. You can then insert the saved bytecode at a later point. Saved blocks are located in rcblocks.json
Agent
Injection
Editing the bytecode of running processes is just as feasible as editing a jar file. When you run recaf with a JDK (javaw/java belonging to a JDK/bin instead of a JRE/bin) you get the ability to attach Recaf to running java processes. To select a process open in the navbar "Injection->JVM's" . A sub-list will appear and is dynamically populated with a list of running java processes. Clicking one will spawn a new instance of Recaf in that process.
Note: There are some issues when attaching to programs with swing user interfaces due to the nature of it's threading handling.
Usage
Once attached to a process editing is done just the same as before. The only difference is saving is done via the "Injection" menu item. When edits are made you need to mark the class as modified ("Injection->Mark" marks the currently open class). Saving changes is done via "Injection->Apply". There are some catches to what can be done and how the patching process works of which you can find here.
TLDR: You can't add new methods / fields. Changes are applied when the call-stack exits a method (You won't be able to insert a break into a while loop if it never exits).


Fighting discomfort
RTO
Walk, and talk and eat.
Perfectionism, Procrastination, Stress, and taking deep breaths
Why forming a new habit is so hard?
How to get to sleep (again)
Stop! Just ask for help!
A routine that works
Mindsets
How to make mistakes
Today I Learn Documents
The power of feedback
My favorite analogy for writing code is writing a book
Finally this blog has autosave
The second year of remote work
Entertainment, the other use o
Why do we use Social Media in
Learning a new language
This is your life
A year of remote working
Things will not always go well
The best time of my life
Social Networks power
Good intention does not exempt
Where does the money come from
No keyboard, less entries
Sunday
Star gazing
Physical Work
Continuous improvement
Always learning
English is not my native langu
Why should we try to be a bett
Choose to remember
How to get to sleep
Online discussions
It’s not just about happiness
Happiness
About this blog
Curating social media
Ideas
A Social Network without
r/manuelmoreale
Finding coincidences
Creating a simplistic blogging


Form and error checking done with pure HTML5 elements. The inputs are “halved” using pseudo-elements. Because we can’t add pseudo-elements for <input> we have to use an extra <span> for each input.
Tested on Mac (Chrome 30, Firefox, Safari), Chrome, Firefox, IE 8-9-10, iOS 7, and WP 8 (IE 10). Support for older browsers was added using JavaScript.
For the password strength indicator, I’m using JS to add classes that specify the colour and animations using CSS3.
No form data is stored, or passed over to the NSA. Inspired by iCloud’s login form.
Tweet • Created by Alex Cican • Source code on GitHub


| HP_ERR_ALLOCATED_DEVICE |
The MIDI output device is already in use.
|
| HP_ERR_BAD_CONTROLLER |
Bad type of controller-event.
|
| HP_ERR_BAD_ID |
Bad identifikation number of event.
|
| HP_ERR_BAD_NEW_NOTE |
Bad value of new note.
|
| HP_ERR_BAD_SHIFT |
Bad parameter for shift.
|
| HP_ERR_BAD_SMPTE_OFFSET |
Bad parameter for smpte offset.
|
| HP_ERR_BAD_TRANSPOSE |
Transpose steps result in bad note-values.
|
| HP_ERR_BUSY |
Cannot call this command after HP_Init. Call HP_Free first.
|
| HP_ERR_CWINS_DEF_INDEX |
Bad def_index selected.
|
| HP_ERR_CWINSFILE |
Bad Instrument Definition File.
|
| HP_ERR_CWINS_FILE_MISSED |
No Instrument Definition File loaded.
|
| HP_ERR_CWINSFILE_NOTFOUND |
Instrument Definition File not found.
|
| HP_ERR_CWINS_LABEL_MISSED |
Bad Instrument Definition File: Label missed.
|
| HP_ERR_CWINS_NO_DRUM_LINES |
No Drum commands in instrument definition.
|
| HP_ERR_CWINS_NO_INSTRUMENT |
Instrument not correct.
|
| HP_ERR_CWINS_NO_INSTRUMENT_DEFINITION_LIST |
Bad Instrument Definition File: No Instrument Definition List.
|
| HP_ERR_CWINS_NO_NAME |
No name found
|
| HP_ERR_DELETE |
Delete not allowed for NoteOff and similar events.
|
| HP_ERR_EVENTDATA |
Invalid event data.
|
| HP_ERR_EVENTTYPE |
Invalid event type.
|
| HP_ERR_FILE_BAD |
Error loading file.
|
| HP_ERR_FILE_FORMAT |
Unknown file format.
|
| HP_ERR_FILE_NOTFOUND |
File not found.
|
| HP_ERR_FILE_NOTOPEN |
Open File (destination) not successful.
|
| HP_ERR_INVALID_DENUM |
Must be 1, 2, 4, 8 or 16.
|
| HP_ERR_INVALID_PARAM |
An invalid parameter was passed to this function.
|
| HP_ERR_INVALID_PPQN |
Invalid PPQN.
|
| HP_ERR_INVALID_SYSEX |
Invalid SysEx.
|
| HP_ERR_KEY |
Bad denotation of key.
|
| HP_ERR_LOAD |
Eventlist of length 0.
|
| HP_ERR_MEMORY |
Not enough memory or resources.
|
| HP_ERR_MIDI_DEVICE |
Bad MIDI output device number.
|
| HP_ERR_NO_DRUM_LINE |
Drum lines missed in instrument definition.
|
| HP_ERR_NONE |
No error.
|
| HP_ERR_NO_PPQN |
PPQN not defined.
|
| HP_ERR_OUTPUT_FORMAT |
Soundcard does not support the features needed for this soundsystem (16bit stereo output).
|
| HP_ERR_PLAY |
Playing the sound failed.
|
| HP_ERR_PLAY_NO_MIDIEVENT |
Meta Events not allowed.
|
| HP_ERR_QUANTISIZE |
Bad quantisize-parameters.
|
| HP_ERR_RANGE_EVENTLIST |
Eventlist out of range.
|
| HP_ERR_SEQUENCENUMBER |
More than one sequence number.
|
| HP_ERR_UNINITIALIZED |
This command failed because HP_Init was not called.
|


What is this?
It is a machine learning based web application for performing end-to-end full-page handwriting recognition using the Apache MXNet deep learning frameworks on the IAM Dataset. This handwriting recognition system would overcome the use of storing physical documents and reducing the storage of image data. Physical documents such as examination papers would be not taking up unnecessary amount of space but instead being transcribed into digital format. By reducing storage, more spaces could be used for meaningful use and data could be transported easily instead of passing the papers around. With the use of handwriting recognition system, researchers could preserve important documents which are prone to decay to due lifetime use of and physical deterioration. This would be a whole new level of access for researchers to access historical manuscripts in a totally new way. It would enable automatic reading of ancient manuscripts and that may lead to an increase of availability of the content.
How does it work?
Figure 1: Pipeline for handwriting recognition
Acknowledgement


Appendix – Tables
TABLE 15. The reliability of the American sailing packet service: regularity of sailings from Liverpool and reported disasters, 1844–1845
TABLE 39. Falmouth packet round trips and consecutive information circles enabled by them on the Liverpool–Rio de Janeiro–Buenos Aires route, 1840
TABLE 73. Letters received from Calcutta by the East India Company, London, 1833
TABLE 74. Letters received from Bombay by the East India Company in London, 1833.
TABLE 77. Consecutive information circles enabled by the express mail services between London and Bombay, 1841


Toggle navigation
Operational Dashboard
UPS
Chiller
My Home
Back to Building Overview
Total Power
Total Power
Battery Current
Last 24h
Last 24h
15 Days
One Month
Powered By EMC


{{content}} Gallery {% for data in site.data.portfolio %} {% endfor %} {% if page.comments %} Discussions Please enable JavaScript to view the comments powered by Disqus. {% endif %}


Responsive webdesign for Wired Score - a certification program launched by Mayor Bloomberg and the New York City Economic Development Corporation that identifies and certifies buildings with the fastest and most reliable internet connections. Realized at laser.nyc


{% extends 'base.html' %} {% block title %}{{ block.super }}: Qualified{% endblock %} {% block container_col %}success-page{% endblock %} {% block content %}
You will need the following documents to move forward with the divorce request:
When applying for divorce, you and your spouse have certain responsibilities (duties) under section 7.6 of the Divorce Act (Canada). Your responsibilities include:
Take action in best interests of children
You and your spouse may have parenting time or decision-making responsibility
for the children of your marriage. You may also have contact with these children
under a contact order. This parenting time, decision-making responsibility and contact
shall be done in the best interests of the children.
Protect children from conflict
Conflicts may come up during your process of getting your divorce. You and your spouse shall,
to the best of your ability, protect children of your marriage from these conflicts.
Resolve matters through family dispute resolution process
Where appropriate, you and your spouse shall try to resolve the matters that may be subject
to an order under this Act through a family dispute resolution process. This may include
matters to do with parenting time or child support.
Provide complete, accurate and up-to-date information
The information you and your spouse provide for your application for divorce shall be complete,
accurate and up-to-date.
Comply with orders
If you and your spouse are subject to an order made under this Act, you and your spouse shall
comply with the order until it is no longer in effect.
You and your spouse will be required to certify your understanding of these responsibilities by signing a Party’s Certificate during the application process.
You will need a Basic BCeID account to access the Online Divorce Assistant. This will also enable you to securely access multiple other online government services.


|
|
|
|
| Select | Name | {{row.employeeName}} | Job Role | {{row.JRSS}} | Account | {{row.canAccount}} | Online Test Score | Technical Interview Result | {{row.technicalInterviewResult}} | Partner Interview Result | {{row.partnerInterviewResult}} |
|---|
| No Records Found! |
| Select | Name | {{row.employeeName}} | Job Role | {{row.JRSS}} | Online Test Score | Technical Interview Result | {{row.technicalInterviewResult}} | Partner Interview Result | {{row.partnerInterviewResult}} |
|---|
| No Records Found! |


Projects
Main
About
Projects
Contact
Nov 13, 2017 | Addabol webapp
Nov 13, 2017 | cPingProbe perl tool
Jan 29, 2018 | Dockerised Python Webapp


Home
News
Conspiracies
Events
About Us
Gallery
Previous
1
2
Next
Recent
Link 1
Link 2
Link 3
Link 4
Link 5
Link 6


Welcome to my little home.
Computer Programmer and Software Developer. Interested in Cloud and Data Science related areas. Currently working as Software Developer Engineer with Amazon Web Services(AWS). Previously, I've worked with Infosys Limited as a Senior Software Engineer.
Visit my Linkedin profile for more information.
Graduated from San Jose State University with specialization in Cloud computing and virtulization. Completed Bachelor's from VTU in Computer Science and Engineering.
Ajeet, Sainik School Bijapur, Batch of 2003-10.
Updating my blog site and will be availabe at the earliest. Meanwhile you can go through my Medium posts and StackOverflow answers.
I've been developing several exciting projects. Source codes are available on my GitHub account. Check them out and let me know what you think.
Projects on GitHub include my Academcic projects, 42 program projects and my personel projects.
You can reach me on Twitter anytime.


{% extends "base.html" %} {% load i18n widget_tweaks %} {% block content %}
{{ error }}
{% blocktrans %}Please, enter your e-mail address and you will receive instructions to change your password.{% endblocktrans %}


This document provides detailed information about various API requests and responses available to the Unorater application backend. The requests use Create Read Update Delete operations synonymous to the POST GET PUT DELETE HTTP commands along with requests data in JavaScript Object Notaion (JSON) to send and recieve data to and from the backend server. Our system uses mostly GET operations based on the preference of recieving a response from the server.
Since most JSON elements are nested (objects inside objects, arrays inside arrays, arrays inside objects e.t.c) , elements nested inside another element are either indented in the table - if the object is used only once, or linked to a table for the object type- if the object is reused (the latter option is used throughout this documentation). Also, note that the element names are case sensitive, something to keep in mind when making the API calls. To understand the JSON syntax, read more here.
The information about all endpoints and the HTTP methods they make use of are documented along with a table showing the details of the JSON format request/response body. The backend makes use of JSON Web Tokens(JWT) to authenticate users. The backend is engineered to categorize users of the system into three access levels: regular users, department administrators, and system administrators. Resources are restricted to users based on their “access level” or “roles”. All resources except the authentication resource requires a JWT along with the right role to access.
The columns of the tables:
JSON RESPONSES
JSON REQUESTS
The request table is the same as response table but includes an additional column called Required that indicates whether you need to include the element. The field will be filled with either “Required” if it must be included in the request, “Optional” if it can be ignored, and “Not Needed” if the field’s value is automatically generated by the server hence should not be included at all.
Resource Name: Authentication
Resource Description: Provides API endpoints for login (includes regular users, system admins, and department admins) and signup for all users.
Resource Access: Open to all
Endpoint Name: User Sign-up
Endpoint Description: Signs up a user with REGULAR_USER role into the system.
Endpoint Request Method: GET/POST
Endpoint Full URL Path: localhost:8080/api/auth/signup
Endpoint Request Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| userName | Username of the user attempting to sign-up | String | Required | |
| Email of the user attempting to sign-up | String | Required | ||
| password | Password of the user attempting to sign-up | String | Required |
Endpoint Request Sample in JSON:
{
"userName": "John",
"email"<EMAIL_ADDRESS>"password": "Doe1821731!@"
}
Endpoint Response Sample in JSON: 200 OK
{
"success": false,
"message": "Email Address already in use!"
}
Endpoint Name: Sign in
Endpoint Description: Signs a user with REGULAR_USER role into the system. This endpoint will return an access token in the response body that will be used to identify the user.
Endpoint Request Method: POST
Endpoint Full URL Path: localhost:8080/api/auth/signin
Endpoint Request Body Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| usernameOrEmail | Username or Email of the user attempting to sign-in | String | Required | |
| password | Password of the user attempting to sign-in | String | Required |
Endpoint Request Sample in JSON:
{
"usernameOrEmail": "John",
"password": "Doe1821731!@"
}
Endpoint Response Sample in JSON: 200 OK
{
"accessToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNTkyNDcwNzE5LCJleHAiOjE1OTMwNzU1MTl9.6eYT244DB1313113WH8HXxR_opfxqnkddbVmkY-18-51h01RUOa-LbrRIJHZEesniU9q7tsID7VbpvhZmqBVDm-g",
"tokenType": "Bearer"
}
Endpoint Name: System Administrator Sign-in
Endpoint Description: Signs a user with SYSTEM_ADMIN role into the system.
Endpoint Request Method: POST
Endpoint Full URL Path: localhost:8080/api/auth/adminsignin
Endpoint Request Table:
Login-In Request Data Object
Endpoint Name: Department Adminstrator Sign-in
Endpoint Description: Signs a user with DEPARTMENT_ADMIN role into the system. This endpoint will return an access token in the response body that will be used to identify the user.
Endpoint Request Method: POST/GET
Endpoint Full URL Path: localhost:8080/api/auth/departmentadminsignin/*(with required fields)
Endpoint Request Table:
Login-In Request Data Object
Resource Name: Department Administrator
Resource Description: Provides API endpoints available to a Department Admin Users. A necessary precondition is that department admins have been assigned their respective department number before this resource is accessed.
Resource Access: ROLE_DEPARTMENT_ADMIN only
Endpoint Name: Add Service
Endpoint Description: Adds a Service to the deaprtment
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/departmentadmin/addservice/*(with required fields)
Endpoint Body Request Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| serviceID | ID of the service | int | Not Required | |
| serviceName | Name of the service being added | String | Required | |
| serviceDescription | Summary of the Service | String | Required | |
| reviews | Reviews associated with the service | Review | Not Needed | |
| datedCreated | Date the Service was created | String | Not Needed | |
| publicService | Indicates if the service is public facing or not | boolean | Required | |
| aggregateScore | The average of all reviews scores for this servies(out of a 5) | int | Not Needed |
Endpoint Request Sample in JSON:
{
"serviceName" : "Dummy Service",
"serviceDescription" : "This is an API test",
"publicService" : true
}
Endpoint Response Sample in JSON: 200 OK
{
"success": true,
"message": "Service Added Successfully"
}
Endpoint Name: View Services
Endpoint Description: Returns a Department data object with a list of all it’s services
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/departmentadmin/services
Endpoint Request Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| departmentID | ID of the department | int | Not Needed | |
| departmentName | Name of the department | String | Required | |
| services | List of all services available in the department | Service | Not Needed |
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample in JSON:
{
{
"departmentID": 1,
"departmentName": "Department of Computer Science and Cybersecurity (CSC)",
"services": [
{
"serviceID": 1,
"departmentID": 1,
"serviceName": "ICS 499-02 Software Engineering and Capstone Project (SUMMER 2020)",
"serviceDescription": "This course focuses on the theory and practice of effectively and efficiently building software systems that satisfy the requirements placed upon them by customers. This course gives an overview of the software lifecycle and introduces various process models used to develop software.",
"reviews": [
{
"reviewID": 1,
"userID": 1,
"serviceID": 1,
"serviceName": "ICS 499-02 Software Engineering and Capstone Project (SUMMER 2020)",
"reviewText": "This course was very informative and interesting. The professor, Prof. Ismail was very professional",
"dateCreated": "2020-06-12T05:00:00.000+00:00",
"dateModified": null,
"score": "2"
}
],
"dateCreated": "2020-06-12T05:00:00.000+00:00"
},
{
"serviceID": 8,
"departmentID": 1,
"serviceName": "Dummy Service",
"serviceDescription": "This is an API test",
"reviews": [],
"dateCreated": "2020-06-18T10:13:59.500+00:00"
"aggregateScore": 3.25
}
]
}
Endpoint Name: Update Service.
Endpoint Description: Updates the service name and description
Endpoint Request Method: PUT
Endpoint Full URL Path: localhost:8080/api/departmentadmin/update
Endpoint Request Table: Service Data Object (serviceID required for call)
Endpoint Request Body Sample in JSON:
{
"serviceID" : 8,
"serviceName" : "Dummy Service Updated",
"serviceDescription" : "This is an API test Updated"
}
Endpoint Response Sample in JSON: 200 OK
{
"success": true,
"message": "Service 8 successfully updated"
}
Endpoint Name: Delete Service
Endpoint Description: Deletes a service and reviews associted with in from the system.
Endpoint Request Method: DELETE/GET
Endpoint Full URL Path: localhost:8080/api/departmentadmin/delete/{serviceID}/***(with required fields)
Endpoint Request Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample in JSON: 200 OK
{
"success": true,
"message": "Service 8 successfully deleted"
}
Endpoint Name: Search Services
Endpoint Description: Searches for services that match the name specified.
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/departmentadmin/search/{serviceName}
Endpoint Request Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
A List of Service Data Object
Resource Name: Regular User
Resource Description: Provides API endpoints available to a Regular User
Resource Access: ROLE_REGULAR_USER (Default role for all users)
Endpoint Name: User Summary
Endpoint Description: Gets the currently authenticated user summary
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/user/me
Endpoint Request Body Table: N.A
Endpoint Response Body Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| id | ID of the User | String | Not Required | |
| userName | Name of the user | String | Not Required | |
| Email of the user | String | Not Required |
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample in JSON: 200 OK
{
"id": 1,
"userName": "John",
"email"<EMAIL_ADDRESS>}
Endpoint Name: View Public Services
Endpoint Description: Gets all the public facing services available for a user to review. The reviews attached to these services can be used to populate the reviews section of the frontend.
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/user/viewpublicservices
Endpoint Request Body Table: N/A
Endpoint Response Body Table:
Service Data Object
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample in JSON: 200 OK
See Service Objects List in JSON Response : Department Data Object
Endpoint Name: View All Services
Endpoint Description: Gets all the services available for a user to review. The reviews attached to these services should not be used to populate the reviews section of the frontend, use the call above instead.
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/user/viewallservices
Endpoint Request Body Table: N/A
Endpoint Response Body Table:
Service Data Object
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample in JSON: 200 OK
See Service Objects List in JSON Response : Department Data Object
Endpoint Name: Check Username Availablilty
Endpoint Description: Returns true if a username is avaliable.
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/user/checkUsernameAvailability?username={name}
Endpoint Request Body Table: N/A
Endpoint Response Body Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| available | Indicates if the given username/email is available or not | boolean | Not Required |
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample in JSON: 200 OK
{
"availabe": true
}
Endpoint Name: Check Email Availablilty
Endpoint Description: Returns true if an email is avaliable.
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/user/checkEmailAvailability?email={email_address}
Endpoint Request Body Table: N/A
Endpoint Response Body Table:
UserIdentity Data Object
Endpoint Name: Get User Profile
Endpoint Description: Returns the currently authenticated user’s profile which includes the user id, username, number user reviews, and approved reviews .
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/user/me/profile
Endpoint Request Body Table: N/A
Endpoint Response Body Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| id | ID of the User | String | Not Required | |
| userName | Name of the user | String | Not Required | |
| numOfReviews | Number of reviews | String | Not Required | |
| allApprovedReviews | List of approved reviews | Review | Not Required |
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample in JSON: 200 OK
{
"id": 1,
"numOfReviews": 1,
"allApprovedReviews": [
{
"reviewID": 1,
"userID": 1,
"serviceID": 1,
"serviceName": "ICS 499-02 Software Engineering and Capstone Project (SUMMER 2020)",
"reviewText": "This course was very informative and interesting. The professor, Prof. Ismail was very professional",
"dateCreated": "2020-06-12T05:00:00.000+00:00",
"dateModified": null,
"score": "5"
}
],
"username": "John"
}
Endpoint Name: Post Review
Endpoint Description: Posts a currently authenticated user’s review.
Endpoint Request Method: POST/GET
Endpoint Full URL Path: localhost:8080/api/user/me/postreview/**(with required fields)
Endpoint Request Body Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| reviewID | ID of the Review | String | Not Needed | |
| userID | ID of user posting review | String | Not Required | |
| serviceID | ID of service being reviewed | String | Required | |
| serviceName | Name of service being reviewed | String | Not Required | |
| reviewText | The review text | String | Required | |
| dateCreated | Date the review was created | Date | Not Required | |
| dateModified | Date the review was modified | Date | Not Required | |
| score | Rating score | String | Required |
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON:
{
"serviceID": 2,
"reviewText":"I really understood the course content",
"score": "4.5"
}
Endpoint Response Sample: 200 OK
Review Created : Thu Jun 18 12: 30: 07 CDT 2020
Endpoint Name: Update Review
Endpoint Description: Updates a currently authenticated user’s review.
Endpoint Request Method: PUT
Endpoint Full URL Path: localhost:8080/api/user/me/updatereview
Endpoint Request Body Table:
Review Data Object (Required: reviewID, reviewText)
Endpoint Request Body Sample in JSON: See Review Data Object Sample
Endpoint Response Sample: 200 OK
Review Modified: Thu Jun 18 12: 30: 07 CDT 2020
Endpoint Name: Delete Review
Endpoint Description: Deletes a currently authenticated user’s review.
Endpoint Request Method: DELETE
Endpoint Full URL Path: localhost:8080/api/user/me/deletereview/{reviewID}
Endpoint Request Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
Endpoint Name: Search Services
Endpoint Description: Searches for services that match the name specified.
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/regularuser/search/{serviceName}
Endpoint Request Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
A List of Service Data Object
Resource Name: System Administrator
Resource Description: Provides API endpoints available to a System Admin User
Resource Access: ROLE_SYSTEM_ADMIN
Endpoint Name: Grant Admin Role
Endpoint Description: Grants system administrator role to a specified user
Endpoint Request Method: POST
Endpoint Full URL Path: localhost:8080/api/grantsysadminrole/{userID}
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
{
"success": true,
"reviewText":"Role ROLE_SYSTEM_ADMIN Successfully Assigned to User John"
}
Endpoint Name: Revoke Admin Role
Endpoint Description: Removes system administrator role from specified user
Endpoint Request Method: POST
Endpoint Full URL Path: localhost:8080/api/removesysadminrole/{userID}
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
{
"success": true,
"reviewText":"Role ROLE_SYSTEM_ADMIN Successfully Removed from User John"
}
Endpoint Name: Grant Department Admin Role
Endpoint Description: Grants department administrator role to specified user
Endpoint Request Method: POST
Endpoint Full URL Path: localhost:8080/api/grantdepadminrole/{userID}/{departmentID}
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
{
"success": true,
"reviewText": "Role ROLE_DEPARTMENT_ADMIN Successfully Assigned to User John"
}
Endpoint Name: Remove Department Admin Role
Endpoint Description: Removes department administrator role from specified user
Endpoint Request Method: POST
Endpoint Full URL Path: localhost:8080/api/removedepadminrole/{userID}
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
{
"success": true,
"reviewText":"Role ROLE_DEPARTMENT_ADMIN Successfully Removed from User John"
}
Endpoint Name: Get Departments
Endpoint Description: Retrieves a list of all departments
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/systemadmin/departments
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
Department Data Object
Endpoint Name: Create Department
Endpoint Description: Adds a department to the system
Endpoint Request Method: POST
Endpoint Full URL Path: localhost:8080/api/systemadmin/createdepartment
Endpoint Request Body Table: Department Data Object
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON:
{
"departmentID": 1,
"departmentName": "Department of Social Sciences"
}
Endpoint Response Sample: 200 CREATED
{
"success": true,
"reviewText": "Department Added Successfully"
}
Endpoint Name: Delete Department
Endpoint Description: Deletes a department along with services and reviews associated with it from the system
Endpoint Request Method: DELETE
Endpoint Full URL Path: localhost:8080/api/systemadmin/delete/{departmentID}
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
Endpoint Name: Update Department
Endpoint Description: Updates a department’s name
Endpoint Request Method: PUT
Endpoint Full URL Path: localhost:8080/api/systemadmin/department/rename/{departmentID}
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
{
"departmentName": "Department of Social Justices(formely Sciences)"
}
Endpoint Name: Get users
Endpoint Description: Retrieves a list of all the users
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/systemadmin/users
Endpoint Request Body Table:
| Element | Description | Type | Required | Notes |
|---|---|---|---|---|
| userID | ID of the User | String | Not Required | |
| userName | Account name of the user | String | Required | |
| Email of the user | String | Required | ||
| password | Password of the user | String | Required | |
| reviews | List of all reviews | Review | Not Required |
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
[
{
"userID": 4,
"userName": "John",
"email"<EMAIL_ADDRESS>"reviews": [
{
"reviewID": 6,
"userID": 4,
"serviceID": 2,
"serviceName": "Linear Algebra and Applications(SUMMER 2020)",
"reviewText": "This course was challenging but interesting",
"dateCreated": "2020-06-17T18:25:21.570+00:00",
"dateModified": null,
"score": "4"
},
{
"reviewID": 9,
"userID": 4,
"serviceID": 2,
"serviceName": "Linear Algebra and Applications(SUMMER 2020)",
"reviewText": "The course was challenging but interesting",
"dateCreated": "2020-06-19T02:19:35.800+00:00",
"dateModified": null,
"score": "2.4"
}
],
"roles": [
{
"id": 2,
"name": "ROLE_REGULAR_USER"
}
],
"dateCreated": "2020-06-16T21:47:51.520+00:00",
"departmentNum": 0
}
]
Endpoint Name: Delete User
Endpoint Description: Deletes a user from the system
Endpoint Request Method: DELETE
Endpoint Full URL Path: localhost:8080/api/systemadmin/user/delete/{userID}
Endpoint Request Body Table: N/A
Endpoint Response Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
Endpoint Name: Search User
Endpoint Description: Searches for users that match the name specified. This will return a list of users matching the name parameter supplied.
Endpoint Request Method: GET
Endpoint Full URL Path: localhost:8080/api/regularuser/search/{userName}
Endpoint Request Body Table: N/A
Endpoint Request Body Sample in JSON: N/A
Endpoint Response Sample: 200 OK
A List of Full User Data Object


After the magnetic coordinates are constructed, we can evaluate the Jacobian
by using directly the definition of the Jacobian,
i.e.,
which can be further written as
|
(201) |
where the partial differential can be evaluated by using numerical
differential schemes. The results obtained by this way should agree with
results obtained from the analytical form of the Jacobian. This consistency
check provide a verification for the correctness of the theory derivation and
numerical implementation. In evaluating the Jacobian by using the analytical
form, we may need to evaluate
, which finally reduces to
evaluating
. The value of
is obtained
numerically based on the numerical data of given in cylindrical
coordinate grids. Then the cubic spline interpolating formula is used to
obtain the value of
at desired points.
(
calculated by the second method (i.e. using
analytic form) is used in the GTAW code; the first methods are also
implemented in the code for the benchmark purpose.) In the following sections,
for notation ease, the Jacobiban of the constructed coordinate system will be
denoted by
, instead of
.
yj
2018-03-09


COLMAP¶
About¶
COLMAP is a general-purpose Structure-from-Motion (SfM) and Multi-View Stereo (MVS) pipeline with a graphical and command-line interface. It offers a wide range of features for reconstruction of ordered and unordered image collections. The software is licensed under the new BSD license. If you use this project for your research, please cite:
@inproceedings{schoenberger2016sfm,
author={Sch\"{o}nberger, Johannes Lutz and Frahm, Jan-Michael},
title={Structure-from-Motion Revisited},
booktitle={Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2016},
}
@inproceedings{schoenberger2016mvs,
author={Sch\"{o}nberger, Johannes Lutz and Zheng, Enliang and Pollefeys, Marc and Frahm, Jan-Michael},
title={Pixelwise View Selection for Unstructured Multi-View Stereo},
booktitle={European Conference on Computer Vision (ECCV)},
year={2016},
}
If you use the image retrieval / vocabulary tree engine, please also cite:
@inproceedings{schoenberger2016vote,
author={Sch\"{o}nberger, Johannes Lutz and Price, True and Sattler, Torsten and Frahm, Jan-Michael and Pollefeys, Marc},
title={A Vote-and-Verify Strategy for Fast Spatial Verification in Image Retrieval},
booktitle={Asian Conference on Computer Vision (ACCV)},
year={2016},
}
The latest source code is available at GitHub. COLMAP builds on top of existing works and when using specific algorithms within COLMAP, please also cite the original authors, as specified in the source code.
Download¶
Executables and other resources can be downloaded from https://demuc.de/colmap/.
Getting Started¶
- Download the pre-built binaries or build the library manually from source (see Installation).
- Download one of the provided datasets (see Datasets) or use your own images.
- Use the automatic reconstruction to easily build models with a single click (see Quickstart).
- Watch the short introductory video at YouTube or read the Tutorial for more details.
Support¶
Please, use the Google Group<EMAIL_ADDRESS>for questions and the GitHub issue tracker for bug reports, feature requests/additions, etc.
Acknowledgments¶
The library was written by Johannes L. Schönberger. Funding was provided by his PhD advisors Jan-Michael Frahm and Marc Pollefeys.


imgur
Businessmodel of Imgur
Customer Segments
The main audience of Imgur’s image sharing platform is its community of free users, comprising internet consumers that wish to view and share images online. Its community is made up primarily of millennial males, with 84% of its user base being male and 74% being under the age of 35, with the majority coming from the US.
The Company also serves advertising agencies and big brands with its various advertising solutions, and provides analytics services to website operators and businesses that wish to gain greater insights into the traffic generated by images and posts. A number of high-profile companies have taken advantage of Imgur’s advertising, including Budweiser, PlayStation, Square Enix, Paramount and MTV.
Value Propositions
Imgur’s principal value to its users is that its platform is free to use, enabling them to view, share and link to images without charge. For advertisers, Imgur’s greatest value is its large base of users, with the platform’s 150 million active monthly users and 6 billion monthly page views give brands and advertising agencies a significant boost in audience numbers.
With the platform’s users primarily being young males it is also easy for advertisers to find their target audience. The Company’s analytics services are also of value its advertising customers, providing useful insights into the extent to which images spread successfully across the internet.
Channels
The Imgur image sharing platform is accessible free of charge through its mobile and desktop websites at www.imgur.com, as well as via its iOS and Android mobile apps.
The Company’s analytics and advertising services can also be accessed via the Company’s website through online contact forms or through direct contact with Imgur’s sales and marketing team.
Customer Relationships
Imgur’s image sharing and hosting platform is a self-service offering, with users able to access the site’s full suite of services after completing their online registration, requiring no interaction with Imgur representatives. The platform’s community go on to generate and curate much of the website’s content.
Imgur’s advertising and commercial analytics services require a greater degree of personal care, with sales representatives tailoring services to the needs of each individual client.
Imgur provides user guides and troubleshooting tips in the help section of its website and keeps users updated with developments through its blog and Facebook and Twitter accounts.
Key Activities
Imgur primarily develops, maintains and manages a platform for online image sharing and hosting. It also sells advertising solutions to big brand names through both traditional advertising and socially-focused native advertising.
Additionally, Imgur provides data analytics services to website operators and businesses that enable them to better understand the life cycle of their images, tracking how many users are viewing a certain image, which websites publish links to the image, where the image is shared and – in particular for advertisers – where the image gains traction from a marketing standpoint.
Key Partners
Imgur’s key partners comprise tech companies, software developers, advertisers and community members.
Imgur has partnered with a number of high-profile tech companies on various projects. It is notably a founding partner of the Digital Ecologies Research Partnerships alongside other websites such as Reddit, Twitch, Fark and Stack Exchange. The initiative aims to help researchers study the data collected by the sites with a view to better understanding social networks and the information trafficked through them.
The Company has also partnered with websites including Mashable, The Onion and Urban Dictionary as part of the Google Contributor project that enables users to view pages without ads by contributing a small fee to the content creators.
Imgur’s community members could also be considered partners as they are responsible for contributing, curating and moderating the content found on the site.
Key Resources
Imgur’s key resources are its platform, its community, its IT infrastructure and its advertising partners. The reliability of Imgur’s platform and its relationship with advertisers is key to the Company’s ability to generate revenue.
The platform’s community of users, who generate much of the site’s content, is key to maintaining the platform and attracting advertisers.
Cost Structure
Imgur’s principal costs relate to the development and maintenance of its platform, the management of its partnerships, the maintenance of its IT infrastructure and the retention of its personnel.
The Company employs engineering, sales and support staff, all of whom are paid salaries and benefits.
Revenue Streams
Imgur has several streams for generating revenue, its primary revenue stream being its various advertising solutions.
The Company allows companies to advertise through banner advertisements, as well as via native advertising solutions such as sponsored posts and sponsored images. These sponsored offerings, which can be single images or albums containing images and GIFs, are boosted by Imgur within its feed so that branded posts can be seen by a maximum number of users. One of the first companies to take advantage of these sponsored opportunities was Ebay.
Imgur also generates revenue through the sale of its API to developers who wish to create Imgur integration for commercial use. It also provides paid-for analytics services to websites and businesses, and sells a variety of products such as t-shirts, hats and stickers. through the Imgur Store.


"A string is traditionally a sequence of characters, either as a literal constant or as some kind of variable." — Wikipedia: String (computer science)
This exercise is to test your understanding of Java Strings. A sample String declaration:
String myString = "Hello World!"
The elements of a String are called characters. The number of characters in a String is called the length, and it can be retrieved with the String.length() method.
Given two strings of lowercase English letters, $A$ and $B$, perform the following operations:
Input Format
Two strings, the first being $A$ and the second being $B$. They are comprised of lowercase English letters (no symbols or spaces) and may not be on the same line.
Output Format
There are three lines of output:
For the first line, sum the lengths of $A$ and $B$.
For the second line, write Yes if $A$ is lexicographically larger than $B$ or No if it is not.
For the third line, capitalize the first letter in both $A$ and $B$ and print them on a single line, separated by a space.
Sample Input
hello
java
Sample Output
9
No
Hello Java
Explanation
String $A$ is "hello" and $B$ is "java".
$A$ has a length of $5$, and $B$ has a length of $4$; the sum of their lengths is $9$.
When sorted alphabetically/lexicographically, "hello" comes before "java"; therefore, $A$ is not larger than $B$ and the answer is No.
When you capitalize the first letter of both $A$ and $B$ and then print them separated by a space, you get "Hello Java".


Module: Dependable Private
- Included in:
- Dependency, Requirement
- Defined in:
- dependable.rb
Overview
This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.
Shared functions for classes which can be depended upon.
Constant Summary collapse
- RESERVED_TAGS =
This constant is part of a private API. This constant may only be used in the Homebrew/brew repository. Third parties should avoid using this constant if possible, as it may be removed or changed without warning.
:run
and:linked
are no longer used but keep them here to avoid their misuse in future. [:build, :optional, :recommended, :run, :test, :linked, :implicit].freeze
Instance Attribute Summary collapse
-
#tags ⇒ Object
readonly
private
Instance Method Summary collapse
-
#build? ⇒ Boolean
private
-
#implicit? ⇒ Boolean
private
-
#option_tags ⇒ Object
private
-
#optional? ⇒ Boolean
private
-
#options ⇒ Object
private
-
#prune_from_option?(build) ⇒ Boolean
private
-
#prune_if_build_and_not_dependent?(dependent, formula = nil) ⇒ Boolean
private
-
#recommended? ⇒ Boolean
private
-
#required? ⇒ Boolean
private
-
#test? ⇒ Boolean
private
Instance Attribute Details
#tags ⇒ Object (readonly)
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
14 15 16 |
# File 'dependable.rb', line 14 def @tags end |
Instance Method Details
#build? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
16 17 18 |
# File 'dependable.rb', line 16 def build? .include? :build end |
#implicit? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
32 33 34 |
# File 'dependable.rb', line 32 def implicit? .include? :implicit end |
#option_tags ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
40 41 42 |
# File 'dependable.rb', line 40 def - RESERVED_TAGS end |
#optional? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
20 21 22 |
# File 'dependable.rb', line 20 def optional? .include? :optional end |
#options ⇒ Object
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
44 45 46 |
# File 'dependable.rb', line 44 def Options.create() end |
#prune_from_option?(build) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
48 49 50 51 52 |
# File 'dependable.rb', line 48 def prune_from_option?(build) return if !optional? && !recommended? build.without?(self) end |
#prune_if_build_and_not_dependent?(dependent, formula = nil) ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
54 55 56 57 58 59 |
# File 'dependable.rb', line 54 def prune_if_build_and_not_dependent?(dependent, formula = nil) return false unless build? return dependent.installed? unless formula dependent != formula end |
#recommended? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
24 25 26 |
# File 'dependable.rb', line 24 def recommended? .include? :recommended end |
#required? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
36 37 38 |
# File 'dependable.rb', line 36 def required? !build? && !test? && !optional? && !recommended? end |
#test? ⇒ Boolean
This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.
28 29 30 |
# File 'dependable.rb', line 28 def test? .include? :test end |


Useful for visualizing the best solver configuration.
| Solver | Total | Average | Standard Deviation | Problem | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ArcasBigScenario1 | ArcasBigScenario2 | ArcasBigScenario3 | ArcasBigScenario4 | ArcasBigScenario5 | ArcasBigScenario6 | ArcasBigScenario7 | ArcasBigScenario8 | ArcasBigScenario9 | ArcasBigScenario10 | ||||
| Hill Climbing 0 | 0hard/0medium/-4158soft | 0hard/0medium/-416soft | 0.0/0.0/28.96 | 0hard/0medium/-435soft 0 | 0hard/0medium/-411soft 0 | 0hard/0medium/-441soft 0 | 0hard/0medium/-459soft 0 | 0hard/0medium/-392soft 0 | 0hard/0medium/-356soft 0 | 0hard/0medium/-409soft 0 | 0hard/0medium/-433soft 0 | 0hard/0medium/-389soft 0 | 0hard/0medium/-433soft 0 |
| Tabu Search 0 | 0hard/0medium/-4158soft | 0hard/0medium/-416soft | 0.0/0.0/28.96 | 0hard/0medium/-435soft 0 | 0hard/0medium/-411soft 0 | 0hard/0medium/-441soft 0 | 0hard/0medium/-459soft 0 | 0hard/0medium/-392soft 0 | 0hard/0medium/-356soft 0 | 0hard/0medium/-409soft 0 | 0hard/0medium/-433soft 0 | 0hard/0medium/-389soft 0 | 0hard/0medium/-433soft 0 |
| Simulated Annealing 2 | 0hard/-9medium/-4796soft | 0hard/-1medium/-480soft | 0.0/0.31/34.83 | 0hard/-1medium/-500soft 4 | 0hard/-1medium/-525soft 4 | 0hard/-1medium/-483soft 4 | 0hard/-1medium/-524soft 4 | 0hard/-1medium/-476soft 4 | 0hard/-1medium/-410soft 4 | 0hard/-1medium/-448soft 4 | 0hard/-1medium/-468soft 4 | 0hard/-1medium/-510soft 4 | 0hard/0medium/-452soft 2 |
| Late Acceptance 3 | 0hard/-10medium/-4352soft | 0hard/-1medium/-436soft | 0.0/0.0/25.67 | 0hard/-1medium/-430soft 2 | 0hard/-1medium/-411soft 2 | 0hard/-1medium/-447soft 2 | 0hard/-1medium/-501soft 2 | 0hard/-1medium/-430soft 2 | 0hard/-1medium/-407soft 2 | 0hard/-1medium/-417soft 2 | 0hard/-1medium/-448soft 2 | 0hard/-1medium/-422soft 2 | 0hard/-1medium/-439soft 3 |
| Step Counting Hill Climbing 3 | 0hard/-10medium/-4352soft | 0hard/-1medium/-436soft | 0.0/0.0/25.67 | 0hard/-1medium/-430soft 2 | 0hard/-1medium/-411soft 2 | 0hard/-1medium/-447soft 2 | 0hard/-1medium/-501soft 2 | 0hard/-1medium/-430soft 2 | 0hard/-1medium/-407soft 2 | 0hard/-1medium/-417soft 2 | 0hard/-1medium/-448soft 2 | 0hard/-1medium/-422soft 2 | 0hard/-1medium/-439soft 3 |
Useful for visualizing the scalability of each solver configuration.
Useful for zooming in on the results of the best score summary.
| Solver | Total | Average | Problem | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ArcasBigScenario1 | ArcasBigScenario2 | ArcasBigScenario3 | ArcasBigScenario4 | ArcasBigScenario5 | ArcasBigScenario6 | ArcasBigScenario7 | ArcasBigScenario8 | ArcasBigScenario9 | ArcasBigScenario10 | |||
| Hill Climbing 0 | 0hard/0medium/0soft | 0hard/0medium/0soft | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 |
| Tabu Search 0 | 0hard/0medium/0soft | 0hard/0medium/0soft | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 | 0hard/0medium/0soft 0 |
| Simulated Annealing 2 | 0hard/-9medium/-638soft | 0hard/-1medium/-64soft | 0hard/-1medium/-65soft 4 | 0hard/-1medium/-114soft 4 | 0hard/-1medium/-42soft 4 | 0hard/-1medium/-65soft 4 | 0hard/-1medium/-84soft 4 | 0hard/-1medium/-54soft 4 | 0hard/-1medium/-39soft 4 | 0hard/-1medium/-35soft 4 | 0hard/-1medium/-121soft 4 | 0hard/0medium/-19soft 2 |
| Late Acceptance 3 | 0hard/-10medium/-194soft | 0hard/-1medium/-20soft | 0hard/-1medium/5soft 2 | 0hard/-1medium/0soft 2 | 0hard/-1medium/-6soft 2 | 0hard/-1medium/-42soft 2 | 0hard/-1medium/-38soft 2 | 0hard/-1medium/-51soft 2 | 0hard/-1medium/-8soft 2 | 0hard/-1medium/-15soft 2 | 0hard/-1medium/-33soft 2 | 0hard/-1medium/-6soft 3 |
| Step Counting Hill Climbing 3 | 0hard/-10medium/-194soft | 0hard/-1medium/-20soft | 0hard/-1medium/5soft 2 | 0hard/-1medium/0soft 2 | 0hard/-1medium/-6soft 2 | 0hard/-1medium/-42soft 2 | 0hard/-1medium/-38soft 2 | 0hard/-1medium/-51soft 2 | 0hard/-1medium/-8soft 2 | 0hard/-1medium/-15soft 2 | 0hard/-1medium/-33soft 2 | 0hard/-1medium/-6soft 3 |
Useful for visualizing the return on investment (ROI) to decision makers.
| Solver | Average | Problem | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| ArcasBigScenario1 | ArcasBigScenario2 | ArcasBigScenario3 | ArcasBigScenario4 | ArcasBigScenario5 | ArcasBigScenario6 | ArcasBigScenario7 | ArcasBigScenario8 | ArcasBigScenario9 | ArcasBigScenario10 | ||
| Hill Climbing 0 | 0,00%/100,00%/12,79% | 0,00%/100,00%/13,00% 0 | 0,00%/100,00%/21,71% 0 | 0,00%/100,00%/8,70% 0 | 0,00%/100,00%/12,40% 0 | 0,00%/100,00%/17,65% 0 | 0,00%/100,00%/13,17% 0 | 0,00%/100,00%/8,71% 0 | 0,00%/100,00%/7,48% 0 | 0,00%/100,00%/23,73% 0 | 0,00%/100,00%/1,37% 0 |
| Tabu Search 0 | 0,00%/100,00%/12,79% | 0,00%/100,00%/13,00% 0 | 0,00%/100,00%/21,71% 0 | 0,00%/100,00%/8,70% 0 | 0,00%/100,00%/12,40% 0 | 0,00%/100,00%/17,65% 0 | 0,00%/100,00%/13,17% 0 | 0,00%/100,00%/8,71% 0 | 0,00%/100,00%/7,48% 0 | 0,00%/100,00%/23,73% 0 | 0,00%/100,00%/1,37% 0 |
| Simulated Annealing 2 | 0,00%/10,00%/-0,30% | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/0,00%/0,00% 4 | 0,00%/100,00%/-2,96% 2 |
| Late Acceptance 3 | 0,00%/0,00%/8,64% | 0,00%/0,00%/14,00% 2 | 0,00%/0,00%/21,71% 2 | 0,00%/0,00%/7,45% 2 | 0,00%/0,00%/4,39% 2 | 0,00%/0,00%/9,66% 2 | 0,00%/0,00%/0,73% 2 | 0,00%/0,00%/6,92% 2 | 0,00%/0,00%/4,27% 2 | 0,00%/0,00%/17,25% 2 | 0,00%/0,00%/0,00% 3 |
| Step Counting Hill Climbing 3 | 0,00%/0,00%/8,64% | 0,00%/0,00%/14,00% 2 | 0,00%/0,00%/21,71% 2 | 0,00%/0,00%/7,45% 2 | 0,00%/0,00%/4,39% 2 | 0,00%/0,00%/9,66% 2 | 0,00%/0,00%/0,73% 2 | 0,00%/0,00%/6,92% 2 | 0,00%/0,00%/4,27% 2 | 0,00%/0,00%/17,25% 2 | 0,00%/0,00%/0,00% 3 |
Useful for comparing different score calculators and/or score rule implementations (presuming that the solver configurations do not differ otherwise). Also useful to measure the scalability cost of an extra constraint.
| Solver | Average | Problem | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| ArcasBigScenario1 | ArcasBigScenario2 | ArcasBigScenario3 | ArcasBigScenario4 | ArcasBigScenario5 | ArcasBigScenario6 | ArcasBigScenario7 | ArcasBigScenario8 | ArcasBigScenario9 | ArcasBigScenario10 | ||
| Problem scale | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 |
| Hill Climbing 0 | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s |
| Tabu Search 0 | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s | 4/s |
| Simulated Annealing 2 | 18/s | 18/s | 18/s | 18/s | 18/s | 18/s | 18/s | 18/s | 18/s | 18/s | 18/s |
| Late Acceptance 3 | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s |
| Step Counting Hill Climbing 3 | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s | 1/s |
Useful for visualizing the performance of construction heuristics (presuming that no other solver phases are configured).
| Solver | Average | Problem | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| ArcasBigScenario1 | ArcasBigScenario2 | ArcasBigScenario3 | ArcasBigScenario4 | ArcasBigScenario5 | ArcasBigScenario6 | ArcasBigScenario7 | ArcasBigScenario8 | ArcasBigScenario9 | ArcasBigScenario10 | ||
| Problem scale | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 | 256 |
| Hill Climbing 0 | 60.954 | 60.961 | 61.120 | 61.210 | 60.704 | 61.187 | 61.371 | 61.034 | 60.623 | 60.407 | 60.929 |
| Tabu Search 0 | 60.915 | 60.783 | 60.473 | 60.515 | 61.271 | 61.065 | 60.762 | 61.051 | 60.545 | 61.592 | 61.096 |
| Simulated Annealing 2 | 61.062 | 61.524 | 60.632 | 61.016 | 60.992 | 61.841 | 60.866 | 61.051 | 60.787 | 61.040 | 60.876 |
| Late Acceptance 3 | 60.890 | 61.373 | 61.379 | 60.716 | 60.829 | 61.024 | 60.636 | 60.719 | 60.644 | 60.877 | 60.712 |
| Step Counting Hill Climbing 3 | 60.847 | 60.625 | 60.499 | 60.992 | 61.172 | 61.096 | 60.379 | 60.535 | 61.454 | 60.948 | 60.778 |
Useful for extrapolating the scalability of construction heuristics (presuming that no other solver phases are configured).
Useful for visualizing trade-off between the best score versus the time spent for construction heuristics (presuming that no other solver phases are configured).
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.008.612 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.019.313 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.226.747 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.438.009 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.643.384 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.852.675 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.743.452 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.732.696 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 3.936.643 bytes on average.
Entity count: 18
Variable count: 14
Problem scale: 256
Memory usage after loading the inputSolution (before creating the Solver): 4.138.033 bytes on average.
<solver> <solutionClass>org.optaplanner.examples.vehiclerouting.domain.VehicleRoutingSolution</solutionClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Standstill</entityClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Task</entityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_MEDIUM_SOFT</scoreDefinitionType> <easyScoreCalculatorClass>org.optaplanner.examples.vehiclerouting.solver.score.VehicleRoutingEasyScoreCalculator</easyScoreCalculatorClass> <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> </scoreDirectorFactory> <termination> <minutesSpentLimit>1</minutesSpentLimit> </termination> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <unionMoveSelector> <changeMoveSelector/> <swapMoveSelector/> <subChainChangeMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainChangeMoveSelector> <subChainSwapMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainSwapMoveSelector> </unionMoveSelector> <acceptor> <acceptorType>HILL_CLIMBING</acceptorType> </acceptor> <forager> <acceptedCountLimit>1000</acceptedCountLimit> </forager> </localSearch> </solver>
<solver> <solutionClass>org.optaplanner.examples.vehiclerouting.domain.VehicleRoutingSolution</solutionClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Standstill</entityClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Task</entityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_MEDIUM_SOFT</scoreDefinitionType> <easyScoreCalculatorClass>org.optaplanner.examples.vehiclerouting.solver.score.VehicleRoutingEasyScoreCalculator</easyScoreCalculatorClass> <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> </scoreDirectorFactory> <termination> <minutesSpentLimit>1</minutesSpentLimit> </termination> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <unionMoveSelector> <changeMoveSelector/> <swapMoveSelector/> <subChainChangeMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainChangeMoveSelector> <subChainSwapMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainSwapMoveSelector> </unionMoveSelector> <acceptor> <entityTabuSize>7</entityTabuSize> </acceptor> <forager> <acceptedCountLimit>1000</acceptedCountLimit> </forager> </localSearch> </solver>
<solver> <solutionClass>org.optaplanner.examples.vehiclerouting.domain.VehicleRoutingSolution</solutionClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Standstill</entityClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Task</entityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_MEDIUM_SOFT</scoreDefinitionType> <easyScoreCalculatorClass>org.optaplanner.examples.vehiclerouting.solver.score.VehicleRoutingEasyScoreCalculator</easyScoreCalculatorClass> <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> </scoreDirectorFactory> <termination> <minutesSpentLimit>1</minutesSpentLimit> </termination> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <unionMoveSelector> <changeMoveSelector/> <swapMoveSelector/> <subChainChangeMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainChangeMoveSelector> <subChainSwapMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainSwapMoveSelector> </unionMoveSelector> <acceptor> <simulatedAnnealingStartingTemperature>5hard/5medium/500soft</simulatedAnnealingStartingTemperature> </acceptor> <forager> <acceptedCountLimit>1</acceptedCountLimit> </forager> </localSearch> </solver>
<solver> <solutionClass>org.optaplanner.examples.vehiclerouting.domain.VehicleRoutingSolution</solutionClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Standstill</entityClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Task</entityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_MEDIUM_SOFT</scoreDefinitionType> <easyScoreCalculatorClass>org.optaplanner.examples.vehiclerouting.solver.score.VehicleRoutingEasyScoreCalculator</easyScoreCalculatorClass> <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> </scoreDirectorFactory> <termination> <minutesSpentLimit>1</minutesSpentLimit> </termination> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <unionMoveSelector> <changeMoveSelector/> <swapMoveSelector/> <subChainChangeMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainChangeMoveSelector> <subChainSwapMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainSwapMoveSelector> </unionMoveSelector> <acceptor> <lateAcceptanceSize>200</lateAcceptanceSize> </acceptor> <forager> <acceptedCountLimit>1</acceptedCountLimit> </forager> </localSearch> </solver>
<solver> <solutionClass>org.optaplanner.examples.vehiclerouting.domain.VehicleRoutingSolution</solutionClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Standstill</entityClass> <entityClass>org.optaplanner.examples.vehiclerouting.domain.Task</entityClass> <scoreDirectorFactory> <scoreDefinitionType>HARD_MEDIUM_SOFT</scoreDefinitionType> <easyScoreCalculatorClass>org.optaplanner.examples.vehiclerouting.solver.score.VehicleRoutingEasyScoreCalculator</easyScoreCalculatorClass> <initializingScoreTrend>ONLY_DOWN</initializingScoreTrend> </scoreDirectorFactory> <termination> <minutesSpentLimit>1</minutesSpentLimit> </termination> <constructionHeuristic> <constructionHeuristicType>FIRST_FIT</constructionHeuristicType> </constructionHeuristic> <localSearch> <unionMoveSelector> <changeMoveSelector/> <swapMoveSelector/> <subChainChangeMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainChangeMoveSelector> <subChainSwapMoveSelector> <selectReversingMoveToo>true</selectReversingMoveToo> </subChainSwapMoveSelector> </unionMoveSelector> <acceptor> <stepCountingHillClimbingSize>400</stepCountingHillClimbingSize> </acceptor> <forager> <acceptedCountLimit>1</acceptedCountLimit> </forager> </localSearch> </solver>
| Name | 2015-08-20_003840 |
|---|---|
| Aggregation | false |
| Failure count | 0 |
| Starting timestamp | 20-ago-2015 0:38:40 |
| Warm up time spent | 30.000 ms |
| Parallel benchmark count / available processors | 1 / 4 |
| Benchmark time spent | 3.079.433 ms |
| VM max memory (as in -Xmx but lower) | 1.834.483.712 bytes |
| OptaPlanner version | 6.2.0.Final |
| Java version | Java 1.7.0_79 (Oracle Corporation) |
| Java VM | Java OpenJDK 64-Bit Server VM 24.79-b02 (Oracle Corporation) |
| Operating system | Linux amd64 3.13.0-32-generic |
| Report locale | es_ES |


In this example, the navigation bar is hidden on small screens and replaced by a button in the top right corner (try to re-size this window).
Lorem ipsum...
In this example, the navigation bar is hidden on small screens and replaced by a button in the top right corner (try to re-size this window).
Lorem ipsum...
In this example, the navigation bar is hidden on small screens and replaced by a button in the top right corner (try to re-size this window).
Lorem ipsum...
In this example, the navigation bar is hidden on small screens and replaced by a button in the top right corner (try to re-size this window).
Lorem ipsum...
In this example, the navigation bar is hidden on small screens and replaced by a button in the top right corner (try to re-size this window).
Lorem ipsum...


For example, this procedure is necessary if you want to have two pictures being drawn using special effects simultaneously.
If you want to draw the several special effects continuously over the same location, do not use Pic.DrawSpecialBack.
Pic.DrawSpecial (pic1, 10, 10, picCopy, picWipeLeftToRight, 500)
Pic.DrawSpecial (pic2, 10, 10, picCopy, picFadeIn, 1000)
If you do, Turing will attempt to run each of the calls at the same time, and most of the special effects will not be seen.
The mode parameter is the same as in Pic.New and has one of the following values:
| picCopy | This draws the picture on top of what was underneath, obscuring it completely. | |
| picXor | This draws the picture XORing it with the background. In DOS, you can use this function to do animation. Drawing an object on top of itself with XOR erases it and restores the background. | |
| picMerge | This draws the picture like picCopy except that any occurrence of the background color in the picture is not drawn to the screen. This allows you to draw an irregularly-shaped object and draw it to the screen. | |
| picUnderMerge | This draws the picture, but only where the background color was displayed underneath it. The effect of this is to make the picture appear to be displayed behind the background. |
See Pic.DrawSpecial for the list of possible values for the transition parameter.
Config.Display (cdNumMaxColors)
function to determine the bit-depth of the display (anything over 256 colors will produce acceptable results).
var redID, blueID: int
Draw.FillStar (0, 0, 100, 100, brightred)
redID := Pic.New (0, 0, 100, 100)
cls
Draw.FillOval (50, 50, 50, 50, brightblue)
blueID := Pic.New (0, 0, 100, 100)
cls
Pic.DrawSpecialBack (redID, 10, 10, picCopy, picWipeLeftToRightNoBar, 1000)
Pic.DrawSpecial (blueID, 160, 10, picCopy, picWipeRightToLeftNoBar, 1000)
Pic.DrawSpecialBack (blueID, 10, 10, picCopy, picSlideLeftToRightNoBar, 1000)
Pic.DrawSpecial (redID, 160, 10, picCopy, picSlideRightToLeftNoBar, 1000)
Pic.DrawSpecialBack (redID, 10, 10, picCopy, picGrowRightToLeftNoBar, 1000)
Pic.DrawSpecial (blueID, 160, 10, picCopy, picGrowLeftToRightNoBar, 1000)
Pic.DrawSpecialBack (blueID, 10, 10, picCopy, picWipeTopToBottomNoBar, 1000)
Pic.DrawSpecial (redID, 160, 10, picCopy, picWipeTopToBottomNoBar, 1000)
Pic.DrawSpecialBack (redID, 10, 10, picCopy, picFadeIn, 1000)
Pic.DrawSpecial (blueID, 160, 10, picCopy, picFadeIn, 1000)
Pic.Free (redID)
Pic.Free (blueID)
This means that you can only call the function by calling Pic.DrawSpecialBack, not by calling DrawSpecialBack.
Pic.DrawSpecial for information on how to draw special effects and wait for completion of the effect.


|
|
IFXLoadManager Class ReferenceThe IFXLoadManager interface is used to load a U3D File from an IFXReadBuffer into the scenegraph.
More...
Inheritance diagram for IFXLoadManager:
List of all members.
|
Public Member Functions |
| virtual IFXRESULT IFXAPI | Initialize (IFXCoreServices *pCoreServices)=0 |
| virtual IFXRESULT IFXAPI | Load (IFXReadBuffer *pReadBuffer, const BOOL isAtomicLoad=TRUE, const IFXString &rScope=L"", const IFXCollisionPolicy collisionPolicy=IFXCOLLISIONPOLICY_REPLACE, const U32 loadId=0)=0 |
| virtual IFXRESULT IFXAPI | Load (IFXReadBuffer *pReadBuffer, const BOOL isAtomicLoad, const IFXString &rScope, const IFXCollisionPolicy collisionPolicy, const U32 loadId, const IFXObjectFilters &rObjectFilters, const IFXString &rWorldAlias, const BOOL isExternalLoad)=0 |
| virtual IFXRESULT IFXAPI | Cancel ()=0 |
| virtual IFXRESULT IFXAPI | Reset ()=0 |
| virtual IFXRESULT IFXAPI | GetAggregateLoadState (EIFXLoadState &rLoadState)=0 |
| virtual IFXRESULT IFXAPI | GetAggregateFileSize (U64 &rFileSize)=0 |
| virtual IFXRESULT IFXAPI | GetAggregateFileSizeLoaded (U64 &rFileSize)=0 |
| virtual IFXRESULT IFXAPI | GetFileSize (U64 &rFileSize)=0 |
| virtual IFXRESULT IFXAPI | GetFileSizeLoaded (U64 &rFileSize)=0 |
| virtual IFXRESULT IFXAPI | GetSubLoadManagersCount (U32 &rCount)=0 |
| virtual IFXRESULT IFXAPI | GetSubLoadManager (U32 index, IFXLoadManager *&rLoadManager)=0 |
| virtual IFXRESULT IFXAPI | GetReadTimeLimit (U32 &rReadTimeLimit)=0 |
| virtual IFXRESULT IFXAPI | SetReadTimeLimit (const U32 rReadTimeLimit)=0 |
| virtual IFXRESULT IFXAPI | GetTransferTimeLimit (U32 &rTransferTimeLimit)=0 |
| virtual IFXRESULT IFXAPI | SetTransferTimeLimit (const U32 rTransferTimeLimit)=0 |
Detailed Description
The IFXLoadManager interface is used to load a U3D File from an IFXReadBuffer into the scenegraph.
Member Function Documentation
| virtual IFXRESULT IFXAPI IFXLoadManager::Cancel |
( |
|
) |
[pure virtual] |
|
|
|
The Load Manager will stop any load or reload operation in progress.
If the Load Manager is registered with the scheduler, the Load Manager will unregister with the scheduler. The Load Manager will clear internal state. If the Load Manager was initialized, the Load Manager will remain initialized.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetAggregateFileSize |
( |
U64 & |
rFileSize |
) |
[pure virtual] |
|
|
|
Returns total file size for all load managers including sub-load managers.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetAggregateFileSizeLoaded |
( |
U64 & |
rFileSize |
) |
[pure virtual] |
|
|
|
Returns loaded file size for all load managers including sub-load managers.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetAggregateLoadState |
( |
EIFXLoadState & |
rLoadState |
) |
[pure virtual] |
|
|
|
Returns current loading state for all load managers including sub-load managers.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetFileSize |
( |
U64 & |
rFileSize |
) |
[pure virtual] |
|
|
|
Returns total file size for current load manager.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetFileSizeLoaded |
( |
U64 & |
rFileSize |
) |
[pure virtual] |
|
|
|
Returns loaded file size for current load manager.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetReadTimeLimit |
( |
U32 & |
rReadTimeLimit |
) |
[pure virtual] |
|
|
|
Returns current blocks read timeout in msec.
Used in non-atomic mode.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetSubLoadManager |
( |
U32 |
index, |
|
|
IFXLoadManager *& |
rLoadManager |
|
) |
[pure virtual] |
|
| virtual IFXRESULT IFXAPI IFXLoadManager::GetSubLoadManagersCount |
( |
U32 & |
rCount |
) |
[pure virtual] |
|
|
|
Returns count of sub-load managers created for external referenced files.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::GetTransferTimeLimit |
( |
U32 & |
rTransferTimeLimit |
) |
[pure virtual] |
|
|
|
Returns current blocks transfer timeout in msec.
Used in non-atomic mode.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::Initialize |
( |
IFXCoreServices * |
pCoreServices |
) |
[pure virtual] |
|
|
|
The Load Manager may perform any necessary initialization procedures.
- Parameters:
-
| pCoreServices | The Load Manager may store the core services pointer. The Load Manager may use the core services pointer to access the scene graph, the scheduler, and the core services data block queue. |
Implemented in CIFXLoadManager. |
|
|
The Load Manager will load the information from pReadBuffer into objects in the scene graph obtained from the core services and create those objects as needed.
- Parameters:
-
| pReadBuffer | The Load Manager will start loading information from pReadBuffer. |
| bAtomicLoad | If bAtomicLoad is true, the Load Manager will load the entire pReadBuffer is possible. If bAtomicLoad is false, the Load Manager will attempt to limit the amout of time spent in the Load call; the Load call may return without loading the entire pReadBuffer. If needed, the Load Manager will register with the scheduler to get additional time to complete the loading of the pReadBuffer. |
| sScope | Current name scope used for names collision resolution. |
| uCollisionPolicy | Collision resolution policy to use when different objects has same names. |
| uLoadId | Identifier of current LoadManager. Serves for names collision resolution. |
| rObjectFilters | Set of filters to apply when objects are loaded. |
| rWorldAlias | Default node alias in external file. |
| bExternalLoad | Indicates that current file is an external referenced files. |
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::Load |
( |
IFXReadBuffer * |
pReadBuffer, |
|
|
const BOOL |
isAtomicLoad = TRUE , |
|
|
const IFXString & |
rScope = L"" , |
|
|
const IFXCollisionPolicy |
collisionPolicy = IFXCOLLISIONPOLICY_REPLACE , |
|
|
const U32 |
loadId = 0 |
|
) |
[pure virtual] |
|
|
|
The Load Manager will load the information from pReadBuffer into objects in the scene graph obtained from the core services and create those objects as needed.
- Parameters:
-
| pReadBuffer | The Load Manager will start loading information from pReadBuffer. |
| isAtomicLoad | If bAtomicLoad is true, the Load Manager will load the entire pReadBuffer is possible. If bAtomicLoad is false, the Load Manager will attempt to limit the amout of time spent in the Load call; the Load call may return without loading the entire pReadBuffer. If needed, the Load Manager will register with the scheduler to get additional time to complete the loading of the pReadBuffer. |
| rScope | Current name scope used for names collision resolution. |
| collisionPolicy | Collision resolution policy to use when different objects has same names. |
| loadId | Identifier of current LoadManager. Serves for names collision resolution. |
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::Reset |
( |
|
) |
[pure virtual] |
|
|
|
This is a reinitialization function.
It unregisters tasks to use current Load Manager for another loading.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::SetReadTimeLimit |
( |
const U32 |
rReadTimeLimit |
) |
[pure virtual] |
|
|
|
Set current blocks read timeout in msec.
Used in non-atomic mode.
Implemented in CIFXLoadManager. |
| virtual IFXRESULT IFXAPI IFXLoadManager::SetTransferTimeLimit |
( |
const U32 |
rTransferTimeLimit |
) |
[pure virtual] |
|
|
|
Set current blocks transfer timeout in msec.
Used in non-atomic mode.
Implemented in CIFXLoadManager. |
© 1999 - 2006 Intel Corporation. All rights reserved.
* Other names and brands may be claimed as the property of others.
|
|