Issue: FLOAT-UNDERFLOWReferences: CLtL p.231
Related issues:LEAST-POSITIVE-SINGLE-FLOAT-NORMALIZATION (not written up),
ERROR-CHECKING-IN-NUMBERS-CHAPTER
Category: ADDITION and CLARIFICATION
Edit history: Version 1, 9-May-89, by Moon (suggested in January, but
the writeup was late)
Version 2, 23-May-89, by Moon (final cleanup for post-CLtL
changes to Common Lisp)
Version 3, 18-Jun-89, by Moon (update based on discussion
within the cleanup subcommittee)
Version 4, 28-Jul-89, by Pitman (modify per X3J13 vote)
Status: Passed FLOAT-UNDERFLOW:ADD-CONTROLS-1-2, June 1989
Problem description:
In implementations with denormalized floating point numbers (as in IEEE
floating point), which are closer to zero than any non-zero normalized
floating point numbers, should the LEAST-POSITIVE- and
MOST-POSITIVE-XXX-FLOAT constants be the normalized or denormalized
values? Which is preferred depends on the application. Note that in
IEEE floating point, denormalized results are normally only produced
as a result of underflow.
Also, there is no portable way to control what happens when a floating
point number underflows. Sometimes this is an error, sometimes not.
Indeed there is no mention at all of underflow or overflow in CLtL.
Pending issue ERROR-CHECKING-IN-NUMBERS-CHAPTER does not mention floating
point overflow or underflow. Draft ANSI Common Lisp specifies error
conditions named FLOATING-POINT-OVERFLOW and FLOATING-POINT-UNDERFLOW
but does not specify the circumstances in which they are signalled and
does not provide any way to suppress underflow checking.
Proposal (FLOAT-UNDERFLOW:ADD-VARIABLES):
1. Clarify that the existing LEAST-POSITIVE-XXX-FLOAT and
LEAST-NEGATIVE-XXX-FLOAT constants are literally as defined, and
therefore can be denormalized numbers in implementations that have
denormalized numbers.
2. Add the following constants, whose values are the normalized floating
point numbers closest in value to (but not equal to) zero. In
implementations that don't have denormalized numbers, the values of these
constants are the same as the values of the other constants.
LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT [Constant]
LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT [Constant]
LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT [Constant]
LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT [Constant]
LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT [Constant]
LEAST-POSITIVE-NORMALIZED-LONG-FLOAT [Constant]
LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT [Constant]
LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT [Constant]
Rationale:
Regularize current practice.
The ANSI Common Lisp standard should be compatible with the widely used
IEEE Floating Point standard.
WITHOUT-FLOATING-UNDERFLOW-TRAPS is provided as a macro to allow
implementation flexibility. It could expand into HANDLER-BIND for
FLOATING-POINT-UNDERFLOW, but in most implementations it will probably
expand into implementation-dependent code that sets a hardware mode bit.
Specifying "should signal" rather than "signals" or "might signal" for
floating-point overflows and underflows seems the best balance between
safety and implementation freedom. It wouldn't harm the proposal to
change it to one of the other two phrases.
Current practice:
Lucid and Symbolics implement this proposal.
Cost to Implementors:
Small.
If there are implementations that currently consider storing only
normalized quantities in the CLtL-specified variables, code that
references those variables might need to be changed to refer to the
new variable so that the existing variables can be changed to store
unnormalized values.
Cost to Users:
Technically none. Portable code cannot rely on this feature because
it is currently inadequately specified. Code which relies on a
particular implementation's interpretation might have to be modified
very slightly and recompiled.
Cost of non-adoption:
Continued confusion over the question of what is held by the
existing LEAST-xxx variables.
Performance impact:
None.
Benefits:
Increased portability and correctness of floating point code.
Esthetics:
Neutral.
Discussion:
Earlier revisions of this proposal addressed other features which
addressed the issues raised in the Problem Description in a more
thorough way. Included in version 3 was a proposal for a
WITHOUT-FLOATING-UNDERFLOW-TRAPS form. Discussion of those
additional features was tabled for lack of time during the meeting
where the vote was taken on this issue--and a proposal equivalent
to this more limited proposal was approved since it was less
controversial.


OgreKit is a regular expression framework for Cocoa.
This framework provides functions processing regular expressions equivalent to Ruby and a high-end find panel.
OgreKit uses Oniguruma/Onigmo as its regular expression engine.
Oniguruma/Onigmo is an excellent regular expression library developed by Mr. Kosako and Mr. Tanaka. It is used as the regular expression engine of Ruby Language.
About OgreKit
OgreKit
-- OniGuruma Regular Expression Framework for Cocoa --
You are free to use/change/redistribute this framework under the modified BSD license.
License
If you have any questions or requests or bug reoprts on OgreKit, feel free to contact me (Isao Sonobe).
Mail: <sonoisa (AT) gmail (DOT) com>
Contact
News
Widespread support for Mac OS versions and architectures
Mac OS X 10.12 - 10.14
64bit Intel CPU
Features
Powerful built-in Find Panel
Code Example
Localization:
German: Mr. Martin Karz
Spanish: Mr. Juan Luis Varona Malumbres
French: Mr. Sebastien Guy
Thank you very much for your kind cooperation!
Collaborators


CIBC to sell majority stake in FirstCaribbean to GNB Financial for US$797M
by The Canadian Press, StaffTORONTO - CIBC has agreed to sell a large portion of its investment in CIBC FirstCaribbean to GNB Financial Group Ltd. for US$797 million.
Upon closing of the transaction in 2020, GNB will own 66.7 per cent of FirstCaribbean's equity, while CIBC will retain 24.9 per cent.
CIBC will receive about US$200 million in cash and provide secured financing for the rest.
GNB Financial is wholly owned by Starmites Corp., the financial holding company of the Gilinski Group, which has about US$15 billion in combined assets.
CIBC FirstCaribbean operates in 16 countries in the region and offers a range of financial services including corporate, retail and business banking as well as wealth management.
CIBC expects to record an after-tax loss on the transaction of about C$135 million in the fourth quarter ended Oct. 31. Upon closing, CIBC expects to realize foreign currency translation gains estimated at C$280 million.


IN 3 EASY STEPS, FIND A STRAIN TAILORED FOR YOU
Step 1: Tell us a little about yourself
Step 2: Select the symptoms you would like to alleviate
Step 3: Choose between matched strains
Looking to switch from pharmaceutical drugs that have been manufactured in laboratories to medicinal marijuana?
Through Medicine Cabinet, we take pride on matching our users to cannabis strains that suit their needs.
There are no symptoms large or small that cannabis cannot solve.
Step 1: Tell us a little about yourself
Step 2: Select the symptoms you would like to alleviate
Step 3: Choose between matched strains
"With Medicine Cabinet, I've been feeling as great as ever! No more wasted time waiting around the doctor's office and having the need to go pick up medicine at the pharmacy. Trust me, you'll love it" - Ron Wheezing
"Medicine Cabinet has allowed me to feel the most relief I have ever experienced. I wasn't too sure how much I would enjoy it, but after giving it a try, I'm never looking back. I look forward to taking my medicine everyday" - Harry Potter
"I was blown away of how easy the cannabis matching system worked for me. I didn't know there were so many strains that I could enjoy! With there being so many options to choose from, you get a different sensation everytime. Goodbye pills, hello Medicine Cabinet!" - Mary Jane


We have already dealt with some deletions involving a stop before another consonant. Thus in Palatal-Deletion P-26 we saw deletion of //j// before a coronal stop.
We need another rule to account for deletion of //g// before any other consonant. Note /ninig/ 'soft', verbal derivative /=nini-bi-/ for //=ninig-w2i-// also noun /wulug/ 'honey-eating material' in case forms Locative /ama-wulu-duj/ Pergressive /ama-wulu-baj/ Relative /ama-wulu-jinyung/ and Allative-Dative /ama-wulu-guy/ Note that Hardening P-18 applies to the suffix-initial consonant, e.g., //-w2aj// → /-baj/ before the //g// is deleted.
We also use the symbol //G// for a stop archiphoneme in a prefix or compound initial, where the stop is manifested indirectly by inducing Hardening P-18 and perhaps other effects on the following morpheme, but where the stop never appears on the surface. Such a stop archiphoneme has the same effects as //g// and if we replace //G// by /g/ we will derive the correct forms. Exx. of such morphemes are Benefactive prefix /-aG-/ and compound initial /-baG-/ eye'. An exx. of a full word would be //baG-ala:di// → //baG-gala:di// P-8) → /ba-gala:di/ 'blind' ('eye-bad').
There is no general deletion of /j/ before other consonants; for a more restricted rule deleting /j/ in some preconsonantal environments see Palatal-Deletion P-26. There is no general deletion of /d/ or /d/ which are not very common before other consonants but are stable in forms where they do occur in this position. The stops /b dh/ do not occur in any relevant underlying combination so we have no evidence as to whether they are deleted before another stop.
| (P-29) | Stop-Deletion | |||
| g | → Ø // -______-C | |||
| G |
The effect of this rule is to delete morpheme-final //g// or //G// when it is not word-final. This is because when there is a following morpheme within the same word, either this morpheme has an underlying initial consonant or else a morpheme-initial consonant is inserted by rule (P-8, P-6).


title=Lucas's Compendium of Odd Java Things | Volume 2: Dynamic Implementations date=2016-09-15 type=post tags=blog status=published ~~~~~~
In this second installment of the series, I'll provide an overview of a few technologies that enable runtime generation of implementation classes and/or proxies. You may ask yourself, "why should I care about this low-level stuff?" Many frameworks we use daily rely upon runtime classes/proxies to do a number of things:
There's a StackOverflow post that covers this as well.
The goals of this overview are
However, this overview will not go into the nuts and bolts of JVM bytecode (which is largely what these tools abstract away for us).
Each example will use the following simple classes:
public class Person { private final String name; private final String position; private final LocalDate birthdate; public Person(String name, String position, LocalDate birthdate) { this.name = name; this.position = position; this.birthdate = birthdate; } public String getName() { return name; } public String getPosition() { return position; } public LocalDate getBirthdate() { return birthdate; } } public interface PersonService { Person getPerson(String name); default void removePerson(Person person) { System.out.println("default removePerson"); } default void updatePerson(Person person) throws Exception { System.out.println("default updatePerson"); } } public abstract class AbstractPersonService implements PersonService { private final DataSource dataSource; public AbstractPersonService(DataSource dataSource) { this.dataSource = dataSource; } @Override public Person getPerson(String name) { System.out.println("getPerson"); // ... if ("Jim Lahey".equals(name)) { return new Person("Jim Lahey", "Trailer Park Supervisor", LocalDate.of(1946, 4, 12)); } else { return null; } } @Override public abstract void updatePerson(Person person); }
These classes provide basis for a few constraints:
And, in accordance with these constraints, each program will produce the following output (5000 times, actually, for rudimentary performance testing):
intercepted... getPerson
intercepted... proxied updatePerson
intercepted... default removePerson
Further, each example will make use of these:
static final int TIMES = 5000; static void intercepted() { System.out.print("intercepted... "); } private static void usePersonService(PersonService personService) { Person person = personService.getPerson("Jim Lahey"); Assert.assertEquals("Jim Lahey", person.getName()); try { personService.updatePerson(person); } catch (Exception e) { throw new RuntimeException(e); } personService.removePerson(person); } static void repeat(Procedure f) { try { // run once to work out initial class generation when applicable f.invoke(); final long start = System.currentTimeMillis(); for (int i = 0; i < TIMES; i++) { f.invoke(); } System.out.println("finished in " + (System.currentTimeMillis() - start) + " ms"); } catch (Exception e) { throw new RuntimeException(e); } } @FunctionalInterface private interface Procedure { void invoke() throws Exception; }
With this premise established, here are some examples using a few libraries: the JDK, cglib, and Javassist.
You might have guessed that no libraries need be pulled in for this. JDK proxying is limited to implementing interfaces, which means I actually have to implement AbstractPersonService "normally" like some kind of savage. This implementation will be a delegate for an invocation handler. An invocation handler is a typical proxying mechanism for "intercepting" calls to methods and handling the calls however one feels like--within reason. One cannot, for example, have an invocation handler return a type that isn't assignable to the original method's return type.
final PersonService unproxiedService = new AbstractPersonService(null) { @Override public void updatePerson(Person person) { throw new UnsupportedOperationException(); } }; final Collection<Method> abstractMethods = Arrays.stream(AbstractPersonService.class.getMethods()) .filter(abstractClassMethod -> Modifier.isAbstract(abstractClassMethod.getModifiers())) .collect(Collectors.toList()); final java.lang.reflect.InvocationHandler handler = new java.lang.reflect.InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { intercepted(); // if the method on the abstract class is abstract, then handle it here final Method unimplementedMethod = abstractMethods.stream() .filter(abstractClassMethod -> Objects.equals(abstractClassMethod.getName(), method.getName()) && Arrays.equals(abstractClassMethod.getParameterTypes(), method.getParameterTypes())) .findFirst() .orElse(null); if (unimplementedMethod != null) { System.out.println("proxied " + method.getName()); return null; } else { return method.invoke(unproxiedService, args); } } }; final Class<PersonService> implClass = (Class<PersonService>) Proxy.getProxyClass( Thread.currentThread().getContextClassLoader(), PersonService.class); try { final Constructor<PersonService> constructor = implClass.getConstructor( java.lang.reflect.InvocationHandler.class); repeat(() -> { final PersonService personService = constructor.newInstance(handler); usePersonService(personService); }); } catch (Exception e) { throw new RuntimeException(e); }
Doesn't it seem a little pointless to have created a Proxy when I could have just
fully implemented unproxiedService
? Not to say that Proxy is not extremely useful,
but for this use case, it arguably is more trouble than it's worth.
cglib is an attractive alternative as it provides runtime subclassing.
This example uses this Maven dependency:
<dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.4</version> </dependency>
Spring and Guice make use of cglib. It's a mid-level tool, as opposed to the high-level AspectJ and the low-level ASM; cglib itself uses ASM for bytecode manipulation.
final Enhancer enhancer = new Enhancer(); // enhancer.setInterfaces(new Class[] { PersonService.class }); // this is inferred enhancer.setSuperclass(AbstractPersonService.class); enhancer.setInterceptDuringConstruction(false); // optimization net.sf.cglib.proxy.InvocationHandler abstractCallback = (obj, method, args) -> { intercepted(); System.out.println("proxied " + method.getName()); return null; }; net.sf.cglib.proxy.MethodInterceptor otherCallback = (obj, method, args, proxy) -> { intercepted(); // invoke the intercepted method on the enhanced object (an AbstractPersonService) return proxy.invokeSuper(obj, args); }; CallbackHelper callbackHelper = new CallbackHelper( AbstractPersonService.class, new Class[] { PersonService.class }) { @Override protected Object getCallback(Method method) { // if the method on the abstract class is abstract, then handle it here if (Modifier.isAbstract(method.getModifiers())) { return abstractCallback; } else { return otherCallback; } } }; enhancer.setCallbackFilter(callbackHelper); enhancer.setCallbacks(callbackHelper.getCallbacks()); Class[] types = new Class[] { DataSource.class }; Object[] args = new Object[] { null }; repeat(() -> { final PersonService personService = (PersonService) enhancer.create(types, args); usePersonService(personService); });
This example uses this Maven dependency:
<dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifactId> <version>3.20.0-GA</version> </dependency>
This is where things start to get weird.
This is not really a dynamic proxying tool, but is primarily a bytecode manipulation tool with kind of a mid-level interface.
You may notice that I'm frequently catching exceptions and rethrowing them as RuntimeException; this is for elucidation of what sorts of Throwables these things throw.
javassist.ClassPool classPool = javassist.ClassPool.getDefault(); final CtClass abstractCtClass, iCtClass, personCtClass, implCtClass; final CtMethod updateCtMethod; try { abstractCtClass = classPool.get(AbstractPersonService.class.getName()); iCtClass = classPool.get(PersonService.class.getName()); personCtClass = classPool.get(Person.class.getName()); implCtClass = classPool.makeClass( AbstractPersonService.class.getPackage().getName() + "." + "PersonServiceImpl", abstractCtClass); updateCtMethod = abstractCtClass.getMethod( "updatePerson", Descriptor.ofMethod(CtClass.voidType, new CtClass[] { personCtClass })); } catch (NotFoundException e) { throw new RuntimeException(e); } final CtMethod newUpdateMethod; try { // altering updateMethod would alter the method on the abstract CtClass! so make a copy newUpdateMethod = CtNewMethod.copy(updateCtMethod, implCtClass, null); newUpdateMethod.setBody("{ System.out.println(\"proxied " + updateCtMethod.getName() + "\"); }"); // note: addMethod must be used after setting the CtMethod body. // otherwise it would be added as an abstract method, which would turn the CtClass into an abstract class. implCtClass.addMethod(newUpdateMethod); // now add the intercept calls CtMethod[] methods = implCtClass.getMethods(); for (CtMethod method : methods) { try { // if getting the method on the interface doesn't fail, // then copy the method, insert the intercept call, and add the new method iCtClass.getDeclaredMethod(method.getName(), method.getParameterTypes()); CtMethod newMethod = CtNewMethod.copy(method, implCtClass, null); newMethod.insertBefore("{ " + this.getClass().getName() + ".intercepted(); }"); if (method.getDeclaringClass() == implCtClass) { // then we're decorating the previously added updateMethod implCtClass.removeMethod(method); } implCtClass.addMethod(newMethod); } catch (NotFoundException e) { e = e; // fall through } } } catch (CannotCompileException e) { throw new RuntimeException(e); } final Class<? extends AbstractPersonService> implClass; try { implClass = classPool.toClass(implCtClass); } catch (CannotCompileException e) { throw new RuntimeException(e); } try { // this works because creating the impl class automatically creates a constructor that calls super final Constructor<? extends AbstractPersonService> constructor = implClass.getDeclaredConstructor(DataSource.class); repeat(() -> { final PersonService personService = constructor.newInstance((DataSource) null); usePersonService(personService); }); } catch (Exception e) { throw new RuntimeException(e); }
I didn't create an example using ByteBuddy but in this discussion it is only fair to at least point out its existence. ByteBuddy has supplanted Javassist in version 2 of mocking library Mockito. It fills a niche similar to that of cglib and Javassist. It seems to offer a friendlier API than any of the previously mentioned tools.
I managed to isolate the function passed to the repeat method in all the examples to a simple sequence: first, instantiate the generated ProxyService class, and second, call usePersonService on the instance. Otherwise, I attempted to optimize each program as much as possible. This table shows the time it took for each of these functions to be run 5000 times. This was run on an early-2013 Macbook Pro.
| Library | Time (ms) |
|---|---|
| JDK | 254 |
| cglib | 261 |
| Javassist | 136 |
Javassist wins! I hypothesize that this is because the generated Javassist class does not involve handlers that calls must be passed through, but is rather a new class as would be produced by compiling a written implementation. But, get a load of this line:
newMethod.insertBefore("{ " + this.getClass().getName() + ".intercepted(); }");
This is brittle and not something a fancy IDE will be able to include in analysis. I would avoid generating code this way unless it's internal to a library.


| |
If the current bound image has a palette, ilSavePal saves the current image's palette to the file specified by FileName. Currently, OpenIL only supports saving to Paint Shop Pro .pal files.
| | ILboolean ilSavePal( char * FileName );
|
Parameters| | - FileName
- Filename to save the palette data to.
|
Errors| | - IL_COULD_NOT_OPEN_FILE
- Could not open FileName for writing.
- IL_ILLEGAL_OPERATION
- The operation attempted is not allowable in the current state. The function returns with no ill side effects. Generally there is currently no image bound or it has been deleted via ilDeleteImages. You should use ilGenImages and ilBindImage before calling the function.
- IL_INVALID_EXTENSION
- No extension set matched FileName's extension.
- IL_INVALID_PARAM
- FileName or Type was NULL.
|
See Also
|


Relative, Absolute, and Fixed Positioning
Easy in Theory, Difficult in Practice
February 15, 2015
BACK | HOMEI started this week very confident about my HTML skills and enjoyed the refresher, and ended the week with my tail between my legs lamenting CSS and its outrageous determination to completely elude me.
While I understand the usefulness of CSS at its most simple level, i.e. to streamline stylizing websites by allowing you to put a lot of important style info in one place so changing it requires only one change instead of one change in every single element you wish to change, its ability to move, align, and position elements has filled me with frustration and self-doubt. Repeating "I am awesome!" does not work when things aren't working for you!
Part of the problem for me was the interplay between display and position properties. For this blog post, I will try to describe the position property and its multiple behaviors.
Normal flow is simply when each block-level element (like <h1>, <p>, etc.) sits atop the next, so the first one is on top, the second one below, the third one below that, etc. If you have two elements that are only half as wide as the page that could fit on the page side-by-side, they won't; they'll just stack on top of one another even though they could fit. This is normal flow: from top to bottom.
Relative positioning is the closest cousin to normal flow, since you are basically adjusting an element's position relative to where it would appear in normal flow. Other surrounding elements are not affected. So if you have three paragraphs, you could move the middle one (for instance) down and to the right any number of pixels, percentage points, or em-spaces. Assign relative flow to an element by inserting the CSS code position: relative in its stylesheet. Then tell it where to move and by how far by adding top, right, left, or bottom offset properties. To move an element down 10 em-spaces, you would write
element {
position: relative;
top: 10em;}
This will move your specified element down 10 em-spaces in relation to where it would normally be, and not affect any of its surrounding elements.
Absolute positioning takes it out of normal flow, and where relative positioning moves an element based on where it would appear in normal flow, absolute positioning moves an element in relation to its parent element.  Much like above in relative positioning, we move an element with absolute positioning using the offset properties. But instead of moving in relation to its normal flow position, it will move in relation to its parent element.
element {
position: absolute;
left: 10em;}
This will move the element 10 em-spaces to the right of where it would ordinarily appear within its containing element, such as a <p> or an <h1>, since we are offsetting its left side by 10em. If there is also another element there 10 em-spaces to the right, they will overlap, since other elements will ignore the position of the absolute positioned item and follow their own specific instructions. Adjusting the width of elements to help them fit is a way to prevent elements from overlapping one another.
Fixed positioning is yet another way to align elements, but instead of moving in relation to its default position like relative positioning, or in relation to its parent element like absolute positioning, fixed positioning moves an element in relation to the browser window itself. Fixed position elements do not affect the positioning of surrounding objects, and most notably, they don't even move when a user scrolls up, down, left, or right on a page. Fixed positioning is a great way to plant a navigation menu at the top or the side of a page; as you scroll through it, the fixed element will stay put as if it were "glued on the screen," as it was described in one of the Codecademy exercises. Assign an element a fixed position like this:
element {
position: fixed;
left: 0px;
top:0px;
width: 100%;}
The above statement will stretch the element 100% of the screen width and align it to the top. It will stay on top even if there is text or another element underneath. To prevent other elements from disappearing beneath it, you can set them with a top-margin (or whatever side you are trying to offset it from) of the height (again, or width or whatever) of the fixed element. This way they won't obscure one another.
Hopefully this summary of the differences among Relative, Fixed, and Absolute positioning in relation to normal flow is helpful! It is a difficult and confusing topic, especially when combined with the display property. The crucial thing to remember is that each type of positioning moves an element in relation to something else:
- Relative Positioning:
- Moves an element in relation to where it would be in normal flow.
- Absolute Positioning:
- Moves an element in relation to its parent element.
- Fixed Positioning:
- Moves an element in relation to the browser window.
Many thanks for reading and see you again soon!


I am currently a Ph.D. student studying Computer Science at UC Davis in the DECAL lab, headed by Premkumar Devanbu and Vladimir Filkov.
My general research interest is in the realm of Software Engineering. In particular, I'm interested in code quality and metrics, network analysis as applied to problems in Software Engineering, economic models of incentives and motivations, and security.
Ph.D. in Computer Science, UC Davis
B.S. in Computer Science, UC Davis
SocInfo 2013Graduate Group in Computer Science Fellowship
2009, 2011, 2012Best Paper Nominee
Dean's List


--- layout: post date: 2012-03-09 time: "09:00:00" authors: ["Greg Wilson"] title: Our Indiana U Workshop Went Well tags: ["Indiana University"] ---
Our two-day bootcamp at Indiana U. on March 7 and 8 went well—while less than half of the people who registered actually showed up (more on that in a moment), everyone who did attend the two days seemed to get a lot out of it. Special thanks are due to Prof. Andy Lumsdaine (host), Jennifer Richards (organizer), and Ben Martin, Randy Heiland, Joe Cottam, Mike Hansen, DongInn Kim, and Purdue's own Jeff Shelton for helping out.
At the end, we asked everyone to give us one good and one bad thing about the bootcamp:
| Good | Bad |
|
|
I agree with most of what's in the second column (especially the comment about breakfast). What I want to fix first, though, is the high no-show rate that plagues any free event. One suggestion is to charge people $20 or so when they register, then refund it when they show up, so that only no-shows wind up paying anything. What would your reaction to that be?
We'll start online tutorials with our Indiana students next week—like their predecessors from the Space Telescope Science Institute, they'll meet once a week to work through a few simple problems that are directly relevant to their research. Next up: the Monterey Bay Aquarium Research Institute and Lawrence Berkeley National Laboratory.


| Total net profit | -74.28 | Gross profit | 1.71 | Gross loss | -75.99 |
| Profit factor | 0.02 | Expected payoff | -0.84 | ||
| Absolute drawdown | -74.28 | Maximal drawdown (%) | 72.57 (-4243.86%) | ||
| Total trades | 88 | Profit trades (% of total) | 6 (6.82%) | Loss trades (% of total) | 82 (93.18%) |
| Long positions (won %) | 82 (6.1%) | Short positions (won %) | 6 (16.67%) | ||
| Largest | profit trade | 0.62 | loss trade | -1.71 | |
| Average | profit trade | 0.28 | loss trade | -0.93 | |
| Minimum | profit trade | 0.03 | loss trade | -0.04 | |
| Maximum | take profit in pips | 610.9 | stop loss in pips | -1074.3 | |
| Average | take profit in pips | 39.9 | stop loss in pips | -153.3 | |
| Minimum | take profit in pips | -191.3 | stop loss in pips | -81.5 | |
| Maximum | Reward-Risk | 4.1 | Duration in minutes | 33 | |
| Average | Reward-Risk | 0.5 | Duration in minutes | 2.6 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (0.32) | consecutive losses (loss in money) | 36.0 (-34.69) | |
| Average | consecutive wins | 1.0 | consecutive losses | 12.0 |
| Total net profit | -69.69 | Gross profit | 1.68 | Gross loss | -71.37 |
| Profit factor | 0.02 | Expected payoff | -0.85 | ||
| Absolute drawdown | -69.69 | Maximal drawdown (%) | 67.98 (-3975.44%) | ||
| Total trades | 82 | Profit trades (% of total) | 5 (6.1%) | Loss trades (% of total) | 77 (93.9%) |
| Largest | profit trade | 0.62 | loss trade | -1.71 | |
| Average | profit trade | 0.34 | loss trade | -0.93 | |
| Minimum | profit trade | 0.03 | loss trade | -0.04 | |
| Maximum | take profit in pips | 475.5 | stop loss in pips | -1074.3 | |
| Average | take profit in pips | 32.6 | stop loss in pips | -153.4 | |
| Minimum | take profit in pips | -191.3 | stop loss in pips | -81.5 | |
| Maximum | Reward-Risk | 2.8 | Duration in minutes | 33.0 | |
| Average | Reward-Risk | 0.4 | Duration in minutes | 2.7 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0.0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (0.32) | consecutive losses (loss in money) | 38.0 (-36.38) | |
| Average | consecutive wins | 1.0 | consecutive losses | 14.0 |
| Total net profit | -4.59 | Gross profit | 0.03 | Gross loss | -4.62 |
| Profit factor | 0.01 | Expected payoff | -0.77 | ||
| Absolute drawdown | -4.59 | Maximal drawdown (%) | 3.47 (-309.82%) | ||
| Total trades | 6 | Profit trades (% of total) | 1 (16.67%) | Loss trades (% of total) | 5 (83.33%) |
| Largest | profit trade | 0.03 | loss trade | -1.13 | |
| Average | profit trade | 0.03 | loss trade | -0.92 | |
| Minimum | profit trade | 0.03 | loss trade | -0.31 | |
| Maximum | take profit in pips | 610.9 | stop loss in pips | -211.7 | |
| Average | take profit in pips | 139.5 | stop loss in pips | -151.5 | |
| Minimum | take profit in pips | -53.5 | stop loss in pips | -127.1 | |
| Maximum | Reward-Risk | 4.1 | Duration in minutes | 5.0 | |
| Average | Reward-Risk | 1.0 | Duration in minutes | 1.5 | |
| Minimum | Reward-Risk | Duration in minutes | 0.0 | ||
| Maximum | consecutive wins (profit in money) | 1.0 (0.03) | consecutive losses (loss in money) | 4.0 (-3.61) | |
| Average | consecutive wins | 1.0 | consecutive losses | 4.0 |


digital HD video, color, sound. 5'51". Tierpark Berlin (DE). 2014 - 2016
Fuga dalla Terra – Tukka’l Cel resonates the sentence ‘touch the sky’ in Piedmontese dialect. Tukkal is also the name of a fighter kite in Urdu, the national language of Pakistan. Tukka’l Ciel explores borders through one of primeval human dreams, the will to fly.
The project develops through a series of flying sessions shared by the Pakistani community who settled in Biella, a city in northern Italy, during the last decade and two leading kite flyers associations in Italy: Freevola and AndyKites.
During the flying, the participants were invited to share their views on what borders exist between the sky and the earth. What shape might an invisible border take? Where does a border start and where does it end?


Design workflow
Meeting designer and developer expectations
The decisions made for this product stem from research with users, stakeholder interviews or the service blueprint. We use this information to build a local design system that aligns with those requirements. In return, these requirements define different portions of our design system, more specifically the design principles, the questions guidelines and the local component library.
The local component library is designed in Figma, then implemented in a local React component library, and both contribute to the local design system.
Figma
Local component library
In Figma, the local component library is used to quickly compose and prototype ideas originating from research or the product owners.
Sprint reference
The source of truth, used by developers to implement new features is set in the main iteration and does not change during the sprint.
Features are used to iterate during a sprint. At the end of a sprint, features that are ready move into the main iteration for next sprint. When moving new features into the main iteration, it is a good idea to update the user flow map.
Archiving
Copies of main iterations are copied into new Figma files. The current sprint is always in the same file. This way, we can always rely on the same Figma URL. When creating an archived copy. Instances of components are detached to prevent breaking archival copies of main iterations.
Code
Local component library
The local component library mirrors the component library in Figma. Its important to keep them synchronized.
Components are built on top of Chakra ui, which is a React component library focused on accessibility. Chakra is very easy to compose and personalize. The best way to adapt Chakra ui to our needs is to create local components that import a Chakra ui component and export a modified or themed version of the same component. this is done to make sure the app aligns with the Web Experience Toolkit (WET) look and feel.
Storybook
Each component also contains its own documentation through Storybook.js Documentation is written mostly in MDX (Markdown + JSX) and allows for modular documentation of our local component library. This documentation provides help on how to use and integrate both chakra ui and local components to compose pages, forms or any frontend parts of the app.
Creating or updating Storybook documentation is the responsibility of anyone who creates a new component or updates the core functionality of a component. Documentation usually contains a quick how-to, examples, variants and prop types definitions.
The Storybook reference site is maintained through the codebase and deployed automatically.


All orders are delayed by at least 15 minutes
Please ensure all data is correct, as there is no backup as of yet.
Taxation notice: Under the Fiscal and Treasury Act 2020, all trades are subject to a 15% tax. This is included in the total cost displayed.
{% if message %} {{message}} {% endif %} {% endblock %}


logo
home
about
contact
Login Form
Username or email
Password
Forgot Password?
Don't have an account?
Create an Account.


Bio
I am a web developer and recent graduate of the Engineering Immersion Career Path bootcamp at Thinkful. I love coding because I can create meaningful programs that can change people's lives the way that it has changed mine. I come from a place where technology was not readily available to me. When I was first introduced to coding during my freshman year of college, I knew instantly that I wanted to become a coder. I sought out to continuously train and keep my skills up-to-date in order to solve complex and unique coding challenges. I am constantly pushing myself so that I can continue to learn and grow as a developer.
Hobbies:
- Playing video games
- Going to the movies
- Watching shows
- Going To Concerts
Current Favorites:
- Video Game: Smash Bros Ultimate
- Movie: The Dark Knight
- Show: Stranger Things
- Artist: STFKR
Skills
Projects
-
BidHub
| Code LiveA React / Express app to help developers connect and collaborate on their coding projects. Users create project descriptions and open them to bidders. Once accepted, collaboration can begin. The app allows for real time communication between collaborators on the project page.
Tech Stack Used: -
Movie Reviews
| Code LiveA React app aimed towards simplifying the movie reviewing experience that allows a user to search through movies and review them.
Tech Stack Used: -
Pocket Board
| Code LiveSimplified investment portfolio designed to make stock trading and money management an engaging process for anyone
Tech Stack Used:Other Tools Used: Quandl API & New York Times API


The Story of this Website #2
Hello, you are now reading the second episode for “The Story of this Website”.
So, you might notice it, this blog completely has a brand new design. And it’s now powered by Polymer, which is new web development based on custom web components and it’s currently developing by Google.
Polymer
It’s beautiful and responsive support. Now the web page will fit the browser automatically, even in mobile and tablet. Of course, this blog still a Jekyll blog.
BUT if are NOT using Google Chrome, you might face some weird problems while browsing this blog. Don’t worry, this is the disadvantage of Polymer. Since Polymer is still beta, it’s normal. The easiest way is to install Google Chrome and uninstall Internet Explorer. Er, why you still using IE ye?
HTTPS
Security, security, security and security. We want a safe browsing experience for sure. So, I decided to ‘upgrade’ my blog from the default HTTP to the more secure HTTP, which is HTTPS (HTTP Secure) Obviously, it’s more secure than HTTP, that’s mean no more data leaks when you are browsing this blog (and homepage too) in public WiFi.
FOR DEVELOPER: Maybe you might ask me, is that free to get this SSL? The answer is YES! I get this SSL for completely free, no even single cent. How? I get this from Cloudflare. Again, for FREE. More info, you are welcome to visit Cloudflare website: Cloudflare.com.
New Feature: Search
Search. Now you can search the content in this blog. The search is accessible from the drawer panel which is at the left-hand site of the website or through this URL: blog.limhenry.me/search
Add to Home Screen
What is this? If you are using Chrome for Android (I’m not sure about iOS), you can make this blog become an app. Just open this blog in Google Chrome (Android), and click option, select “Add to Homescreen”. Now, you have created an app for my blog. Ha! Congrats :)
Subscribe
Lastly, remember to subscribe to my blog's newsletter through this link: Subscribe Here.
Thank you for support me and remember to disable or pause AdBlock while browsing my blog. Thank you and have a nice day.


If not specified (strict), the search is sucessful if
the WLD is within a calculated limit where each insertion,
deletion and replacement adds a weight to a common pool of
weights. This is the mathematically correct WLD.
From a user's point of view the strict WLD is an
exclusive-OR of the arguments given, for example if allowed
insertions=2 and allowed replacements=2, the search fails if 2
characters had been inserted and an additional operation would
be needed to match. Depending on the weights it may also fail if
1 character was inserted and 1 character replaced and an
additional operation would be needed to match. The strict
algorithm may match less than expected from a first glance of
the specified arguments, but does not return false positives.
If specified (relaxed), the search is also successful
if the combined pool for insertions and deletions is below a
doubled calculated limit and replacements are treated
differently. Additionally, swapped characters are counted as one
replacement.
From a user's point of view the relaxed WLD is an
inclusive-OR of the arguments given, for example if allowed
insertions=2 and allowed replacements=2, the search succeeds if
2 characters had been inserted and an additional replacement is
needed to match. The relaxed algorithm may return false
positives, but meets user expectation better.


Are you looking for a home help business opportunity or a home help franchise?
You could make a living for yourself by doing DIY, shopping or helping around the house with our home help business opportunity!
Want to jump to a particular section? Introduction, Market Place, Income or The Package
Welcome to our Home Help business opportunity. We specialise in the full set-up of your chosen product, including marketing to get your new business off to the best start possible! We believe help and support is a key factor in any new business and we are proud to supply this for as long as you need it, FREE of charge!
“Work for yourself, not by yourself”
It is YOUR business outright. We simply set it up and guide you through the potential pitfalls, so you have the best chance to succeed and we make sure you don’t make the mistakes that most people (who try to go it alone – due to a lack of experience), will make! We offer all the positives of a franchise without all the complications normally associated with them.
Home Help is a fantastic and very profitable business that can be run in your spare time to bring in extra cash. Or, if you prefer, you can operate it as a management business and have people working for you and make massive profits from someone else doing the work. Simply put, you can keep things simple and do the work for an hourly rate or, employ people to do the work for you and manage them on a daily basis, or do both - the choice is yours!
Home Help can come in any shape or form. Following our proven system and training (no experience required) you’ll be able to operate your own Home Help business in all aspects, easily and profitably. Your clients will want you to help them with an array of issues, (none of which are medical), so there is nothing here that qualifications are required to do. It is simply day-to-day help. Here are just a sample of the jobs you can assist them with:-
- Shopping
- Washing
- Dog walking
- Cooking meals
- DIY- putting up pictures, shelves, etc.
- Cleaning
- Gardening
- Baby sitting
Basically, if you’re going to “Home Help” yourself, you simply offer the services YOU are comfortable with and are capable of doing!
If you wish to operate your business from a management role and employ people to do the work for you, we will even help you to recruit people. From the retired to young students, some with skills, and some just willing to help with daily chores, i.e. you can have gardeners, handymen or maybe child carers or Electricians and Plumbers on your books.
With millions currently unemployed (and let’s face it, regardless whether things improve), you’ll always have people out of work, semi-retired or retired. So, recruitment should not be an issue.
These will be casual workers to start off with: - people who are maybe retired, semi-retired, unemployed or students looking for some part time work. As you get busier, you can add more people to your books when needed. This way, you have a work force ready to work as and when required, that costs you nothing up front. They only get paid when you do!
Example:
A call comes in for some gardening work, you send the person on your books that’s registered with you as a gardener. You set the charges (we would recommend £15 per hour) you pay your gardener £8 per hour (again your choice) and you make £7 per hour. The job takes 5 hours which the customer signs off and you make £35 for simply taking and passing on the booking. We have a contract that prevents your employees poaching your bookings from you in the future.
There are no overheads, as you can operate from home. We will supply you with everything you’ll need and even tele-market your chosen area using our
professional telesales team. Using our proven referral system; this will help generate you customers on a regular basis. This will help your business get off to the best start possible. Our experience tells us that the initial marketing is very important for any new business, so we are here to help. Our proven referral system allows local businesses to promote your services for a small commission. This should ensure regular business, which does not cost you anything; you only pay them a small commission on results! A win-win situation for you! They advertise your business for you and you only pay them once the booking has been completed.
This, combined with your website that we will design for you, plus, your own efforts, i.e. simply letting your friends know, advertising on Facebook/Twitter and your friends doing the same, it’s amazing how social networking will spread the word about your new business. We will guide you through this if you don’t understand how it works.
“Before long, you’ll have regular, repeat business”
Our system is an excellent way to help get your new business off to the best start possible. You’ll meet some interesting people in this business, so it’s ideal for those who enjoy the outdoors and meeting people. Or, if you feel you have good management skills, then management is definitely the way to go!
But remember; we offer full training in both aspects of the business, so you could start as a home help if you prefer and then, when you feel more confident, move up to management at anytime!
“Work for yourself, not by yourself - We are with you all the way!”
Whether you’re retired, semi-retired, or just starting on a new career, this is for you!
- Earn up to £150 per day being a home help
- Operate as management and the sky's the limit
- Work in your spare time to suit you
- Repeat business
- Secure future
- No overheads - work from home
- No selling required
- Professional set-up
- Full training, back-up and support
Every day, there is someone, somewhere, wanting “HELP” with something. Unlike your competitors, you won’t offer just one service, you’ll offer multiple services, and therefore, you are offering more “CHOICES”, which gives you more profit... simple!
Here are some examples of the type of people that will use your services:-
- The Aged
- Pregnant women
- People with disabilities
- Working Professionals
- Busy families
- Companies
With our proven unique referral system, we will ensure your new business gets off to the best start possible...
Here are some figures so you can understand the potential of this business:-
Home Help: You can charge what you like, as it’s your business, but the average of £10 per hour is the norm for basic jobs. Obviously, if you’re skilled at something, you should charge accordingly, so your earnings could double or even treble.
Based on 8 hours per day - 5 days per week:
- Basic: washing, cleaning
- £10 per hour = £400.00 per week!
- £12 per hour = £480.00 per week!
- Semi skilled: Gardening, DIY
- £15 per hour = £600.00 per week!
- £18 per hour = £720.00 per week!
- Skilled: Plumbing, Electrician
- £20 per hour = £800.00 per week!
- £30 per hour = £1,200.00 per week!
What you must remember, even if you're a qualified Electrician, this does not mean you will get electrical work all the time. This business is based on a wide variety of services, so the more you are prepared to do, the more work you’ll get.
Management: If you feel you have good management skills and would prefer to manage other people and wish to earn a potential small fortune, then this is a must for you!
The following is based on an average charge of £18 per hour, as you will have some basic and skilled workers. Paying your workers an average of £10 per hour, this will give you £8 per hour!
Let's start at the beginning with just 3 workers, that’s = £96.00 per DAY!
10 x people on your books each working 4 hours per day = £320.00 per DAY!
20 x people = £640.00 per DAY! I think you can see where this is going...
That’s £161,200 per year based on just a 5 day week. There are 7 days in a week!
As you can see, there is a massive potential here to become a millionaire as you have hardly any overheads! You are simply managing your staff from home.
Once you're established; if you had 50 workers on your books, that’s £416,000 per year! Again based on only 4 hours per day, 5 days per week...
If you had 50 people working a full 8 hours per day, 7 days per week, that’s £1,164,800.00 per year!
Taking into account your overheads, like commissions and administration, you're still looking at earning over 1 million pounds per year, as you work from home.
There are 2 options:
Option A – You do the work
Option B – Management
Our prices are a gift compared to our competitors and we believe we offer the best support and backup you could wish for. Most charge anywhere between £15,000 and £30,000+ for just one product/service. The way they're structured will mean you’ll need even more working capital to operate your business. Our business model is designed to give you the best start possible with a minimal outlay, while offering multiple services...
There is no license fee with option A
Option A. Home help, full package = £3,995+VAT
- Full training in all aspects of Home Help, including material instructions and networking
- Liability insurance for 12 months
- Website - including full design and 12 months’ hosting
- Local SEO to help your website be visible on search engines
- We will register your business with all major search engines
- 1000 Advertising leaflets
- 0844/3 programmable digital answering system. It’s just like having your own secretary to take calls, messages and divert calls in a very professional manner when you’re not available
- Full marketing campaigns in your chosen area to help your business get off to the best start possible using our proven referral system
- Full back-up & support
Option B. Management, full package = £7,995+VAT
- Full training at our offices in all aspects of business management, including material instructions and networking
- Laptop with accounting software and the latest systems
- Templates – contracts – invoices, etc
- Database software to keep track of your business
- Your own adviser to help with recruiting your workers
- Liability insurance for 12 months
- Website - including full design and 12 months’ hosting
- Local SEO to help your website be visible on search engines
- We will register your business with all major search engines
- 2000 Advertising leaflets and cards
- A large advertising banner
- Accounts program and access to our in house accountant
- 0844/3 programmable digital answering system. It’s just like having your own secretary to take calls, messages and divert calls in a very professional manner when you’re not available.
- Extended full marketing campaigns in your chosen area to help your business get off to the best start possible using our proven referral system.
- Free affiliate program – earn £££’s
- Full back-up & support


[gecode-users] Building an intset with an int[][2]
Guido Tack
tack at ps.uni-sb.de
Wed Sep 5 20:53:52 CEST 2007
Jérémie Vautard wrote:
> I have a problem concerning the use of the IntSet(int[][2],int)
> constructor : I have a function which builds the array of ranges with
> a code which looks like :
> {
> int** ret = new int*[length_of_array]
> for (int i=0;i<length_of_array;i++) ret[i] = new int[2];
> return ret;
> }
>
> In another class, I want to build the IntSet using the array given by
> my function. However, if I do :
> int** myRanges = my_function(parameters);
> Intset mySet(myRanges,the_length);
There's a big difference between int[][2] and int**! The latter is an
array of arrays, whereas the first is a multidimensional array. Your
code has to look as follows (not tested ;-) ):
{
int (*ret)[2] = new int[length_of_array][2];
return ret;
}
... returning a pointer to a two-dimensional array. And then
int (*myRanges)[2] = my_function(parameters);
IntSet mySet(myRanges,the_length);
Cheers,
Guido
More information about the gecode-users
mailing list


Initializing the Driver
This section describes how to load and initialize the JDBC driver in your programs.
Importing JDBC
Any source that uses JDBC needs to import the java.sql
package, using:
import java.sql.*;
NOTE
You should not import the
org.postgresql
package unless you are not using standard PostgreSQL™ extensions to the JDBC API.
Loading the Driver
Applications do not need to explicitly load the org.postgresql. Driver class because the pgJDBC driver jar supports the Java Service Provider mechanism. The driver will be loaded by the JVM when the application connects to PostgreSQL™ (as long as the driver’s jar file is on the classpath).
NOTE
Prior to Java 1.6, the driver had to be loaded by the application - either by calling
Class.forName("org.postgresql.Driver");
or by passing the driver class name as a JVM parameterjava -Djdbc.drivers=org.postgresql.Driver example.ImageViewer
These older methods of loading the driver are still supported but they are no longer necessary.
Connecting to the Database
With JDBC, a database is represented by a URL (Uniform Resource Locator). With PostgreSQL, this takes one of the following forms:
- jdbc:postgresql:database
- jdbc:postgresql:/
- jdbc:postgresql://host/database
- jdbc:postgresql://host/
- jdbc:postgresql://host:port/database
- jdbc:postgresql://host:port/
The parameters have the following meanings:
-
host
= The host name of the server. Defaults tolocalhost
. To specify an IPv6 address your must enclose thehost
parameter with square brackets, for example:jdbc:postgresql://[::1]:5740/accounting
-
port
= The port number the server is listening on. Defaults to the PostgreSQL™ standard port number (5432). -
database
= The database name. The default is to connect to a database with the same name as the user name.
To connect, you need to get a Connection
instance from JDBC. To do this, you use the DriverManager.getConnection()
method:
Connection db = DriverManager.getConnection(url, username, password)
Connection Parameters
In addition to the standard connection parameters the driver supports a number of additional properties which can be used to specify additional driver behaviour specific to PostgreSQL™. These properties may be specified in either the connection
URL or an additional Properties
object parameter to DriverManager.getConnection
. The following examples illustrate the use of both methods to establish a SSL connection.
If a property is specified both in URL and in Properties
object, the value from Properties
object is ignored.
String url = "jdbc:postgresql://localhost/test";
Properties props = new Properties();
props.setProperty("user", "fred");
props.setProperty("password", "secret");
props.setProperty("ssl", "true");
Connection conn = DriverManager.getConnection(url, props);
String url = "jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true";
Connection conn = DriverManager.getConnection(url);
-
user
= String The database user on whose behalf the connection is being made. -
password
= String The database user’s password. -
options
= String Specify ‘options’ connection initialization parameter. For example setting this to-c statement_timeout=5min
would set the statement timeout parameter for this session to 5 minutes.
The value of this property may contain spaces or other special characters, and it should be properly encoded if provided in the connection URL. Spaces are considered to separate command-line arguments, unless escaped with a backslash ( \
); \\
represents a literal backslash.
Properties props = new Properties();
props.setProperty("options", "-c search_path=test,public,pg_catalog -c statement_timeout=90000");
Connection conn = DriverManager.getConnection(url, props);
String url = "jdbc:postgresql://localhost:5432/postgres?options=-c%20search_path=test,public,pg_catalog%20-c%20statement_timeout=90000";
Connection conn = DriverManager.getConnection(url);
-
ssl (
boolean)
Connect using SSL. The server must have been compiled with SSL support. This property does not need a value associated with it. The mere presence of it specifies a SSL connection. However, for compatibility with future versions, the value “true” is preferred. For more information see Using SSL.
Setting up the certificates and keys for ssl connection can be tricky see The test documentation for detailed examples. -
sslfactory(
String)
The provided value is a class name to use as theSSLSocketFactory
when establishing a SSL connection. For more information see the section called Custom SSLSocketFactory defaults to LibPQFactory -
sslfactoryarg (
String)
: (deprecated)
This value is an optional argument to the constructor of the sslfactory class provided above. For more information see the section called Custom SSLSocketFactory. -
sslmode (
String)
possible values includedisable
,allow
,prefer
,require
,verify-ca
andverify-full
.require
,allow
andprefer
all default to a non validating SSL factory and do not check the validity of the certificate or the host name.verify-ca
validates the certificate, but does not verify the hostname.verify-full
will validate that the certificate is correct and verify the host connected to has the same hostname as the certificate. Default isprefer
Setting these will necessitate storing the server certificate on the client machine see Configuring the client for details. -
sslcert (
String)
Provide the full path for the certificate file. Defaults to /defaultdir/postgresql.crt, where defaultdir is${user.home}/.postgresql/
in *nix systems and%appdata%/postgresql/
on windows.
It can be a PEM encoded X509v3 certificate
NOTE
This parameter is ignored when using PKCS-12 keys, since in that case the certificate is also retrieved from the same keyfile.
sslkey (
String)
Provide the full path for the key file. Defaults to /defaultdir/postgresql.pk8.
NOTE
The key file must be in PKCS-12 or in PKCS-8 DER format. A PEM key can be converted to DER format using the openssl command:
openssl pkcs8 -topk8 -inform PEM -in postgresql.key -outform DER -out postgresql.pk8 -v1 PBE-MD5-DES
PKCS-12 key files are only recognized if they have the “.p12” (42.2.9+) or the “.pfx” (42.2.16+) extension.
If your key has a password, provide it using the sslpassword
connection parameter described below. Otherwise, you can add the flag -nocrypt
to the above command to prevent the driver from requesting a password.
NOTE
The use of -v1 PBE-MD5-DES might be inadequate in environments where high level of security is needed and the key is not protected by other means (e.g. access control of the OS), or the key file is transmitted in untrusted channels. We are depending on the cryptography providers provided by the java runtime. The solution documented here is known to work at the time of writing. If you have stricter security needs, please see here for a discussion of the problem and information on choosing a better cipher suite.
-
sslrootcert (
String)
File name of the SSL root certificate. Defaults to defaultdir/root.crt. It can be a PEM encoded X509v3 certificate -
sslhostnameverifier (
String)
Class name of hostname verifier. Defaults to usingorg.postgresql.ssl.PGjdbcHostnameVerifier
-
sslpasswordcallback (
String)
Class name of the SSL password provider. Defaults toorg.postgresql.ssl.jdbc4.LibPQFactory.ConsoleCallbackHandler
-
sslpassword (
String)
If provided will be used by ConsoleCallbackHandler -
protocolVersion (
int)
The driver supports the V3 frontend/backend protocols. The V3 protocol was introduced in 7.4 and the driver will by default try to connect using the V3 protocol. -
loggerLevel (
String)
This property is no longer used by the driver and will be ignored. All logging configuration is handled by java.util.logging. -
loggerFile (
String)
This property is no longer used by the driver and will be ignored. All logging configuration is handled by java.util.logging. -
allowEncodingChanges (
boolean)
When using the V3 protocol the driver monitors changes in certain server configuration parameters that should not be touched by end users. Theclient_encoding
setting is set by the driver and should not be altered. If the driver detects a change it will abort the connection. There is one legitimate exception to this behaviour though, using theCOPY
command on a file residing on the server’s filesystem. The only means of specifying the encoding of this file is by altering theclient_encoding
setting. The JDBC team considers this a failing of theCOPY
command and hopes to provide an alternate means of specifying the encoding in the future, but for now there is this URL parameter. Enable this only if you need to override the client encoding when doing a copy. -
logUnclosedConnections (
boolean)
Clients may leakConnection
objects by failing to call itsclose()
method. Eventually these objects will be garbage collected and thefinalize()
method will be called which will close theConnection
if caller has neglected to do this himself. The usage of a finalizer is just a stopgap solution. To help developers detect and correct the source of these leaks thelogUnclosedConnections
URL parameter has been added. It captures a stacktrace at eachConnection
opening and if thefinalize()
method is reached without having been closed the stacktrace is printed to the log. -
autosave (
String)
Specifies what the driver should do if a query fails. Inautosave=always
mode, JDBC driver sets a savepoint before each query, and rolls back to that savepoint in case of failure. Inautosave=never
mode (default), no savepoint dance is made ever. Inautosave=conservative
mode, savepoint is set for each query, however the rollback is done only for rare cases like ‘cached statement cannot change return type’ or ‘statement XXX is not valid’ so JDBC driver rollsback and retries The default isnever
-
cleanupSavepoints (
boolean)
Determines if the SAVEPOINT created in autosave mode is released prior to the statement. This is done to avoid running out of shared buffers on the server in the case where 1000’s of queries are performed. The default is ‘false’ -
binaryTransfer (
boolean)
Use binary format for sending and receiving data if possible. The default is ’true’ -
binaryTransferEnable (
String)
A comma separated list of types to enable binary transfer. Either OID numbers or names. -
binaryTransferDisable (
String)
A comma separated list of types to disable binary transfer. Either OID numbers or names. Overrides values in the driver default set and values set with binaryTransferEnable. -
databaseMetadataCacheFields (
int)
Specifies the maximum number of fields to be cached per connection. A value of 0 disables the cache. Defaults to 65536. -
databaseMetadataCacheFieldsMiB (
int)
Specifies the maximum size (in megabytes) of fields to be cached per connection. A value of 0 disables the cache. Defaults to 5. -
prepareThreshold (
int)
Determine the number ofPreparedStatement
executions required before switching over to use server side prepared statements. The default is five, meaning start using server side prepared statements on the fifth execution of the samePreparedStatement
object. More information on server side prepared statements is available in the section called Server Prepared Statements. -
preparedStatementCacheQueries (
int)
Determine the number of queries that are cached in each connection. The default is 256, meaning if you use more than 256 different queries inprepareStatement()
calls, the least recently used ones will be discarded. The cache allows application to benefit from Server Prepared Statements (seeprepareThreshold
) even if the prepared statement is closed after each execution. The value of 0 disables the cache. N. B. Each connection has its own statement cache. -
preparedStatementCacheSizeMiB (
int)
Determine the maximum size (in mebibytes) of the prepared queries cache (seepreparedStatementCacheQueries
). The default is 5, meaning if you happen to cache more than 5 MiB of queries the least recently used ones will be discarded. The main aim of this setting is to preventOutOfMemoryError
. The value of 0 disables the cache. -
preferQueryMode (
String)
Specifies which mode is used to execute queries to database: simple means (‘Q’ execute, no parse, no bind, text mode only), extended means always use bind/execute messages, extendedForPrepared means extended for prepared statements only, endedCacheEverything means use extended protocol and try cache every statement (including Statement.execute(String sql)) in a query cache. extended | extendedForPrepared | extendedCacheEverything | simple The default is extended -
defaultRowFetchSize (
int)
Determine the number of rows fetched inResultSet
by one fetch with trip to the database. Limiting the number of rows are fetch with each trip to the database allow avoids unnecessary memory consumption and as a consequenceOutOfMemoryError
. The default is zero, meaning that inResultSet
will be fetch all rows at once. Negative number is not available. -
loginTimeout (
int)
Specify how long to wait for establishment of a database connection. The timeout is specified in seconds. -
connectTimeout (
int)
The timeout value used for socket connect operations. If connecting to the server takes longer than this value, the connection is broken. The timeout is specified in seconds and a value of zero means that it is disabled. -
socketTimeout (
int)
The timeout value used for socket read operations. If reading from the server takes longer than this value, the connection is closed. This can be used as both a brute force global query timeout and a method of detecting network problems. The timeout is specified in seconds and a value of zero means that it is disabled. -
cancelSignalTimeout (
int)
Cancel command is sent out of band over its own connection, so cancel message can itself get stuck. This property controls “connect timeout” and “socket timeout” used for cancel commands. The timeout is specified in seconds. Default value is 10 seconds. -
tcpKeepAlive (
boolean)
Enable or disable TCP keep-alive probe. The default isfalse
. -
tcpNoDelay (
boolean)
Enable or disable TCP nodelay. The default istrue
. -
unknownLength (
int)
Certain postgresql types such asTEXT
do not have a well defined length. When returning meta-data about these types through functions likeResultSetMetaData.getColumnDisplaySize
andResultSetMetaData.getPrecision
we must provide a value and various client tools have different ideas about what they would like to see. This parameter specifies the length to return for types of unknown length. -
stringtype (
String)
Specify the type to use when bindingPreparedStatement
parameters set viasetString()
. Ifstringtype
is set toVARCHAR
(the default), such parameters will be sent to the server as varchar parameters. Ifstringtype
is set tounspecified
, parameters will be sent to the server as untyped values, and the server will attempt to infer an appropriate type. This is useful if you have an existing application that usessetString()
to set parameters that are actually some other type, such as integers, and you are unable to change the application to use an appropriate method such assetInt()
. -
ApplicationName (
String)
Specifies the name of the application that is using the connection. This allows a database administrator to see what applications are connected to the server and what resources they are using through views like pg_stat_activity. -
kerberosServerName (
String)
The Kerberos service name to use when authenticating with GSSAPI. This is equivalent to libpq’s PGKRBSRVNAME environment variable and defaults to “postgres”. -
jaasApplicationName (
String)
Specifies the name of the JAAS system or application login configuration. -
jaasLogin (
boolean)
Specifies whether to perform a JAAS login before authenticating with GSSAPI. If set totrue
(the default), the driver will attempt to obtain GSS credentials using the configured JAAS login module(s) (e.g.Krb5LoginModule
) before authenticating. To skip the JAAS login, for example if the native GSS implementation is being used to obtain credentials, set this tofalse
. -
gssEncMode (
String)
PostgreSQL 12 and later now allow GSSAPI encrypted connections. This parameter controls whether to enforce using GSSAPI encryption or not. The options aredisable
,allow
,prefer
andrequire
disable
is obvious and disables any attempt to connect using GSS encrypted modeallow
will connect in plain text then if the server requests it will switch to encrypted modeprefer
will attempt connect in encrypted mode and fall back to plain text if it fails to acquire an encrypted connectionrequire
attempts to connect in encrypted mode and will fail to connect if that is not possible. The default isallow
.
-
gsslib (
String)
Force either SSPI (Windows transparent single-sign-on) or GSSAPI (Kerberos, via JSSE) to be used when the server requests Kerberos or SSPI authentication. Permissible values are auto (default, see below), sspi (force SSPI) or gssapi (force GSSAPI-JSSE). If this parameter is auto, SSPI is attempted if the server requests SSPI authentication, the JDBC client is running on Windows, and the Waffle libraries required for SSPI are on the CLASSPATH. Otherwise Kerberos/GSSAPI via JSSE is used.
Note
This behaviour does not exactly match that of libpq, which uses Windows’ SSPI libraries for Kerberos (GSSAPI) requests by default when on Windows.
gssapi mode forces JSSE’s GSSAPI to be used even if SSPI is available, matching the pre-9.4 behaviour.
On non-Windows platforms or where SSPI is unavailable, forcing sspi mode will fail with a PSQLException.
To use SSPI with PgJDBC you must ensure thatthe waffle-jna
library and its dependencies are present on the CLASSPATH
. pgJDBC does not bundle waffle-jna
in the pgJDBC jar.
Since: 9.4
-
sspiServiceClass (
String)
Specifies the name of the Windows SSPI service class that forms the service class part of the SPN. The default, POSTGRES, is almost always correct. See: SSPI authentication (Pg docs) Service Principal Names (MSDN), DsMakeSpn (MSDN) Configuring SSPI (Pg wiki). This parameter is ignored on non-Windows platforms. -
useSpnego (
boolean)
Use SPNEGO in SSPI authentication requests -
sendBufferSize (
int)
Sets SO_SNDBUF on the connection stream -
receiveBufferSize (
int)
Sets SO_RCVBUF on the connection stream -
readOnly (
boolean)
Put the connection in read-only mode -
readOnlyMode (
String)
One of ‘ignore’, ’transaction’, or ‘always’. Controls the behavior when a connection is set to read only, When set to ‘ignore’ then thereadOnly
setting has no effect. When set to ’transaction’ andreadOnly
is set to ’true’ and autocommit is ‘false’ the driver will set the transaction to readonly by sendingBEGIN READ ONLY
. When set to ‘always’ andreadOnly
is set to ’true’ the session will be set to READ ONLY if autoCommit is ’true’. If autocommit is false the driver will set the transaction to read only by sendingBEGIN READ ONLY
. The default the value is ’transaction’ -
disableColumnSanitiser (
boolean)
Setting this to true disables column name sanitiser. The sanitiser folds columns in the resultset to lowercase. The default is to sanitise the columns (off). -
assumeMinServerVersion (
String)
Assume that the server is at least the given version, thus enabling to some optimization at connection time instead of trying to be version blind. -
currentSchema (
String)
Specify the schema (or several schema separated by commas) to be set in the search-path. This schema will be used to resolve unqualified object names used in statements over this connection. -
targetServerType (
String)
Allows opening connections to only servers with required state, the allowed values are any, primary, master, slave, secondary, preferSlave, preferSecondary and preferPrimary. The primary/secondary distinction is currently done by observing if the server allows writes. The value preferSecondary tries to connect to secondary if any are available, otherwise allows falls back to connecting also to primary. The value preferPrimary tries to connect to primary if it is available, otherwise allows falls back to connecting to secondaries available.- N. B. the words master and slave are being deprecated. We will silently accept them, but primary and secondary are encouraged.
-
hostRecheckSeconds (
int)
Controls how long in seconds the knowledge about a host state is cached in JVM wide global cache. The default value is 10 seconds. -
loadBalanceHosts (
boolean)
In default mode (disabled) hosts are connected in the given order. If enabled hosts are chosen randomly from the set of suitable candidates. -
socketFactory (
String)
The provided value is a class name to use as theSocketFactory
when establishing a socket connection. This may be used to create unix sockets instead of normal sockets. The class name specified bysocketFactory
must extendjavax.net.SocketFactory
and be available to the driver’s classloader. This class must have a zero-argument constructor, a single-argument constructor taking a String argument, or a single-argument constructor taking a Properties argument. The Properties object will contain all the connection parameters. The String argument will have the value of thesocketFactoryArg
connection parameter. -
socketFactoryArg (
String)
: (deprecated)
This value is an optional argument to the constructor of the socket factory class provided above. -
reWriteBatchedInserts (
boolean)
This will change batch inserts from insert into foo (col1, col2, col3) values (1, 2, 3) into insert into foo (col1, col2, col3) values (1, 2, 3), (4, 5, 6) this provides 2-3x performance improvement -
replication (
String)
Connection parameter passed in the startup message. This parameter accepts two values; “true” anddatabase
. Passingtrue
tells the backend to go into walsender mode, wherein a small set of replication commands can be issued instead of SQL statements. Only the simple query protocol can be used in walsender mode. Passing “database” as the value instructs walsender to connect to the database specified in the dbname parameter, which will allow the connection to be used for logical replication from that database. Parameter should be use together withassumeMinServerVersion
with parameter >= 9.4 (backend >= 9.4) -
escapeSyntaxCallMode (
String)
Specifies how the driver transforms JDBC escape call syntax into underlying SQL, for invoking procedures or functions. InescapeSyntaxCallMode=select
mode (the default), the driver always uses a SELECT statement (allowing function invocation only). InescapeSyntaxCallMode=callIfNoReturn
mode, the driver uses a CALL statement (allowing procedure invocation) if there is no return parameter specified, otherwise the driver uses a SELECT statement. InescapeSyntaxCallMode=call
mode, the driver always uses a CALL statement (allowing procedure invocation only). The default isselect
-
maxResultBuffer (
String)
Specifies size of result buffer in bytes, which can’t be exceeded during reading result set. Property can be specified in two styles:- as size of bytes (i.e. 100, 150M, 300K, 400G, 1T);
- as percent of max heap memory (i.e. 10p, 15pct, 20percent); A limit during setting of property is 90% of max heap memory. All given values, which gonna be higher than limit, gonna lowered to the limit. By default, maxResultBuffer is not set (is null), what means that reading of results gonna be performed without limits.
-
adaptiveFetch (
boolean)
Specifies if number of rows, fetched inResultSet
by one fetch with trip to the database, should be dynamic. Using dynamic number of rows, computed by adaptive fetch, allows to use most of the buffer declared inmaxResultBuffer
property. Number of rows would be calculated by dividingmaxResultBuffer
size into max row size observed so far, rounded down. First fetch will have number of rows declared indefaultRowFetchSize
. Number of rows can be limited byadaptiveFetchMinimum
andadaptiveFetchMaximum
. Requires declaring ofmaxResultBuffer
anddefaultRowFetchSize
to work. By default, adaptiveFetch is false. -
adaptiveFetchMinimum (
int)
Specifies the lowest number of rows which can be calculated byadaptiveFetch
. RequiresadaptiveFetch
set to true to work. By default, minimum of rows calculated byadaptiveFetch
is 0. -
adaptiveFetchMaximum (
int)
Specifies the highest number of rows which can be calculated byadaptiveFetch
. RequiresadaptiveFetch
set to true to work. By default, maximum of rows calculated byadaptiveFetch
is -1, which is understood as infinite. -
logServerErrorDetail (
boolean)
Whether to include server error details in exceptions and log messages (for example inlined query parameters). Setting to false will only include minimal, not sensitive messages. By default this is set to true, server error details are propagated. This may include sensitive details such as query parameters. -
quoteReturningIdentifiers (
boolean)
Quote returning columns. There are some ORM’s that quote everything, including returning columns If we quote them, then we end up sending ““colname”” to the backend instead of “colname” which will not be found. -
authenticationPluginClassName (
String)
Fully qualified class name of the class implementing the AuthenticationPlugin interface. If this is null, the password value in the connection properties will be used.
Unix sockets
By adding junixsocket you can obtain a socket factory that works with the driver. Code can be found at here and instructions at here
Dependencies for junixsocket are :
<dependency>
<groupId>com.kohlschutter.junixsocket</groupId>
<artifactId>junixsocket-core</artifactId>
<version>2.3.3</version>
</dependency>
Simply add ?socketFactory=org.newsclub.net.unix.AFUNIXSocketFactory$FactoryArg&socketFactoryArg=[path-to-the-unix-socket]
to the connection URL.
For many distros the default path is /var/run/postgresql/.s. PGSQL.5432
Connection Fail-over
To support simple connection fail-over it is possible to define multiple endpoints (host and port pairs) in the connection url separated by commas. The driver will try once to connect to each of them in order until the connection succeeds. If none succeeds a normal connection exception is thrown.
The syntax for the connection url is: jdbc:postgresql://host1:port1,host2:port2/database
The simple connection fail-over is useful when running against a high availability postgres installation that has identical data on each node. For example streaming replication postgres or postgres-xc cluster.
For example an application can create two connection pools.
One data source is for writes, another for reads. The write pool limits connections only to a primary node:jdbc:postgresql://node1,node2,node3/accounting?targetServerType=primary
.
And read pool balances connections between secondary nodes, but allows connections also to a primary if no secondaries are available: jdbc:postgresql://node1,node2,node3/accounting?targetServerType=preferSecondary&loadBalanceHosts=true
If a secondary fails, all secondaries in the list will be tried first. In the case that there are no available secondaries the primary will be tried. If all the servers are marked as “can’t connect” in the cache then an attempt will be made to connect to all the hosts in the URL, in order.


Connect to server first
Execute a function to measure time
Run
Previous command
Build result
No command assigned


--- title: Maisa Solutions | Web and mobile development services description: MaisaSolutions is a web and mobile development services company. We build awesome things for the web & mobile. We’re creators, designers, engineers, educators and problem solvers. We provides Agile Ruby on Rails Development and Consulting. --- {% include head.html %}
{% include header.html %}Page not Found!
Unfortunately the page you were looking for could not be found. It may be temporarily unavailable, moved or no longer exist.
please try one of these instead


Text Highlighten
How razorback-jumping frogs can level six piqued gymnasts!
How razorback-jumping frogs can level six piqued gymnasts!
How razorback-jumping frogs can level six piqued gymnasts!
How razorback-jumping frogs can level six piqued gymnasts!
How razorback-jumping frogs can level six piqued gymnasts!
How razorback-jumping frogs can level six piqued gymnasts!


|
On behalf of the Faculty of Arts & Science, we welcome you to our remarkable alumni family.
You are now part of a global community of more than 190,000 outstanding alumni, taking your place among leaders and contributors in arts, sciences, business, government, public service, social justice, the not-for-profit sector and so much more. We are proud of all our graduates and wish you well on your career journey.
You won’t want to miss any news about A&S networking and panel events as part of the award-winning Backpack to Briefcase programs, or the services available to you as an A&S graduate. In these challenging economic times, we encourage you to leverage your alumni benefits and connections to facilitate next steps.
Please take a moment now to update your contact information with us and you could win one of five pairs of AirPods! (Contest runs until July 31, 2020.)
Check out an upcoming summer Backpack to Briefcase event on August 10, with alumnus Rajeev Chib. Read why he believes mentorship is “a valuable asset.” Be sure to register for this b2B event and stay tuned for future opportunities.
Convocation Memories
Congratulations once again on your resilience and adaptability throughout the pandemic lockdown. You deserve to be very proud of completing your last few months at U of T under extraordinary circumstances.
If you haven’t done so already, take a look at our Convocation coverage here and the many ways the A&S Class of 2020 celebrated at home.
Keep showing your pride in your education from U of T, one of the world’s top universities. Enjoy a free U of T alumni email and share your connection to your alma mater with the world.
Career Assistance
We are here to help you in this next stage of your life. As a new A&S graduate, you continue to have access to career counselling services for up to two years after graduation.
You can also spruce up your LinkedIn profile with Mastering LinkedIn, free for U of T alumni.
And you might be interested in MBA Essentials Online: Your Bridge to Business— with an exclusive 50 per cent discount for new alumni! Gain key insights from Rotman MBA professors in just nine online sessions over three weeks, starting August 10.
How to Stay in Touch
Now more than ever, it’s vitally important to stay connected. The A&S Office of Advancement is your link to a remarkable and influential alumni network. Join us this fall for online professional development workshops as well as virtual mentorship programs and volunteer opportunities. Enjoy a variety of panel discussions and lecture events on the latest issues of the day throughout the academic year (we won’t grade you — we promise!), and network with other alumni from a variety of fascinating career areas.
These are all excellent ways to stay connected with the Faculty of Arts & Science, your classmates and your growing network of contacts.
Wait, there’s more!
U of T offers a host of benefits exclusive to our amazing alumni, including:
- A $550 credit toward a course during the five years following your graduation at the School of Continuing Studies, offering more than 600 non-degree courses and 80 specialized certificate programs, such as project management, leadership, digital strategy, business communications, innovation, languages and more
- Free access to LinkedIn Learning from August 20 to December 17, 2020 (while quantities last and maximum one registration per alum), with online courses from industry experts in business, technology, design and creative topics
- Ten Thousand Coffees, an online tool that allows U of T students, recent grads and alumni to connect virtually over coffee (or tea!)
- Events, workshops and lectures in the GTA and around the world
- Free massive online open courses (MOOCs) on a variety of topics in partnership with Coursera and EdX
- Preferred-rate financial products and retail discounts
- Various volunteer opportunities, from mentoring to serving on Governing Council
And much more.
Once again, our heartfelt congratulations on your recent graduation. You are now an esteemed member of U of T’s alumni group. To learn more about the noteworthy benefits of being a U of T alum, here’s a site dedicated to new grads. Please don’t hesitate to reach out to me should you have any questions or ideas for alumni events and engagement. I would be delighted to hear from you. Enjoy a safe and healthy summer.
With warm regards,
Jennifer Wells
Manager, Alumni Engagement
<EMAIL_ADDRESS>|


In this pragraph you have to add about the crop that is predicted and any special nicknames or you can add fertilizers erquired to grow or the time period required to grow crops etc....


Toggle navigation
Kunal Gupta
PO KA! BEE DO BEE DO BEE DO!
Website revamping in process.
To get in touch
,
add me on LinkedIn
or reach me out at
kgupta2789 [at] gmail [dot] com
My Resume


Team Activity
0
yesterday
Commits
0
yesterday
Pull Requests
0
yesterday
Reviews
0
yesterday
Leaderboard
| {{data.leaderboard.length}} Members
{{user.name}}
{{user.username}}
{{user.points}} Points
Latest Activities
| last 5
Project
From
Type
Description


[gecode-users] Number of branches/choices
Max Ostrowski
ostrowsk at cs.uni-potsdam.de
Wed Oct 24 10:24:27 CEST 2012
Thanks for this, so a solution and a failure is also a node.
This formula seems to fit.
Thx
On 10/23/2012 04:50 PM, Christian Schulte wrote:
> Hi,
>
> So we could say that every edge (corresponding to an alternative) in the
> search tree is a decision made during search (even though the branching in
> the parent node defines all alternatives directly below).
>
> Then, if we are talking binary branchings only, we all know that the number
> of edges #e is the number of nodes #n minus 1. The total number of nodes #n
> is the number of nodes reported plus the number of solutions and failures.
> Voila!
>
> Cheers
> Christian
>
> --
> Christian Schulte, www.ict.kth.se/~cschulte/
>
>
> -----Original Message-----
> From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
> Of Max Ostrowski
> Sent: Tuesday, October 23, 2012 1:31 PM
> To: users at gecode.org
> Subject: [gecode-users] Number of branches/choices
>
> Hi,
>
> i want to compare some statistics,
> and want to find out how many choices (non-deterministic decisions) gecode
> has made during branching.
> (So, not talking about non-deterministic propagation, just simple
> select/propagate).
>
> The statistic object
> dfsSearchEngine_->statistics().node
> tells me something about the used nodes, but this not seem to be the right
> thing to use.
>
> So, for a simple CSP, with variable x = 0..9 without any constraint, i get
> 19 nodes (enumerating all solutions).
> Can i simply divide this by 2 to get my 9 decisions?
>
> Best,
> Max
>
> _______________________________________________
> Gecode users mailing list
> users at gecode.org
> https://www.gecode.org/mailman/listinfo/gecode-users
>
More information about the users
mailing list


reggistration form
first name:
last name
login page
user name
selet your mood
good
bad
this for selection or combo box
html
css
javascript
python
this is for audio and video
this running ok or not
this is running totaly ok


PRx Dev Site Modifications
Preferences
Success:
Error:
Display "Go To Issue Number" Box
Suppress Edit Issues Popup Window
Suppress All Popup Windows
Save
Reset All Settings
If you have problems or suggestions please visit the
project
or
issues
page.


--- layout: session_academic academic: true title: "Assessing the Completeness of Urban Green Spaces in OpenStreetMap" code: "WTWQYC" speaker_names_with_affiliations: ['Christina Ludwig; GIScience Research Group, University of Heidelberg<EMAIL_ADDRESS>'Robert Hecht; Leibniz Institute of Ecological Urban and Regional Development<EMAIL_ADDRESS>'Sven Lautenbach; GIScience Research Group, University of Heidelberg<EMAIL_ADDRESS>extra_tags: room: "Hörsaal West" length: "00:20" time: "Sunday, 17:30" recording: True doi: https://doi.org/10.5281/zenodo.3387701 ---
OpenStreetMap provides a lot of valuable information about urban green spaces, but the numerous and conceptually overlapping OSM tags that describe such features lead to spatially heterogenous representations in OSM. We developed an exploratory data analysis methodology to identify locally relevant OSM tags for mapping green spaces in a specific area and compared the extracted OSM features to administrative data to evaluate the level of completeness in regard to urban green spaces.