Hi,
Sorry for the basic questions, I've bought an emonTXv3 and a load of CT sensors but I'm brand new to this so need a few pointers. I've read all the docs I could find but I'm not 100% sure so wanted to verify some things.
1) If I want to use a CT sensor to monitor the light circuit coming out of the consumer unit, then do I need to connect it around only around the live wire coming out?
2) Similar to 1), if I want to monitor a specific appliance using a CT sensor, should I make an extension lead to go inbetween the plug socket and the appliance and connect the CT around the live wire only? Does it matter that the CT won't be a tight fit and will be loose around the wire?
3) Or is there a better device that I should buy to do 2) ?
4) I've read that I shouldn't connect a CT while the power is on. Does this apply to the ones in the shop - http://shop.openenergymonitor.com/100a-max-clip-on-current-sensor-ct/ ?
I was wondering if it was OK to connect them live as they don't touch the wire like some other CT sensors?
Many thanks,
Re: Basic CT Questions
1. Yes.
2. Yes, and no, it doesn't matter that the CT is loose on a wire. It makes no detectable difference whether it's straight through the middle, at one side or slanted.
3. The Shop CT with the emonTx V3 is not really suitable for single appliances, as the CT is good to 100 A and the 3 principal inputs are scaled for that. (Input 4 is scaled for a bit under 20 A maximum, so much better for a single appliance, or your lighting circuit.) If you're able to accept that accuracy (percentage-wise) falls dramatically when the current gets below about 1% (125 W / 250 W depending on what your supply is, then you're OK, otherwise you should consider modifying the emonTx V3 to increase the sensitivity of inputs 1 - 3 by changing the burden resistor.
4. You shouldn't dis-connect a CT while its primary circuit is energised. This is because a CT is a current source, so it will generate whatever voltage is necessary to drive the current it wants to into its load. Therefore, quite high voltages can be generated. The YHDC SCT-013-000 has protective zener diodes inside that limit the voltage to 22 V, so while there's probably not enough current available to damage the V3, for the sake of switching off the load (or unclipping the CT from the cable) it's better not to risk it.
Re: Basic CT Questions
Thanks so much for the quick reply, makes it very clear.
With regards 3. would you say that if I want to monitor each circuit coming out of the consumer unit then the CT would be a good fit, especially for the lights if the majority is switched off - the Wattage will be less than 125W.
I don't really want to modify the emonTx, I'm liable to break the whole thing.
For monitoring individual appliances, what would you recommend to work with emonhub/emoncms?
thanks again,
Re: Basic CT Questions
The emonTx was designed for whole-house monitoring. I don't know of a device that is more suitable for individual appliances, unfortunately.
Modifying the emonTx should be relatively simple if you have some experience in electronics - for each channel that you want to modify, you need to remove one surface-mount resistor and replace it with a wire-ended one of higher value.
But if this is too daunting, I'd suggest you try the emonTx as it is and see if the performance is acceptable. You should get reasonable accuracy down to about 200 mA ( ~45 W with a 240 V supply) using input 4. So with more than about 4 medium-sized CFLs, you should be OK for accuracy, though it will read something to much lower currents. There's a Building Blocks article that explains the theory behind what happens to the ADC with very small inputs.
Re: Basic CT Questions
Hello,
I have had the same issue: 100A CT with all lights turned on in the corridor leading to ... less than 5A (remember that according to the manufacturer, 0-5A is not considered a range to use the CT). So i decided to switch to 30A CT (same manufacturer): to do so, bear in mind that 30A CT already features a burden resistor, this means that you have to remove 3 x 22R resistors
http://neocampus.univ-tlse3.fr/wiki/doku.php?id=sensors:openenergymonitor
Hope this helps
Re: Basic CT Questions
As far as I'm aware, the 30 A CT is identical to the 100 A version except that it has the built-in burden resistor. It is therefore a less flexible solution.
Re: Basic CT Questions
Thanks for pointing out that, i was not aware of the fact that all of the SCT-013 series are in fact the same CT either without a bruden resistor (100A) or with an integrated one (all of the others).
Anyway, 30A is still far above my requirements (most of the time, light circuit is either protected with a 10a or 16a and most of the time real power consumption is far below this level), so i bought both 5 an 10a CT (non -split core version) and i removed emonTxV3's burden resistors: this allows me to directly solder my burden resistor at the output pins of those CT.
Byebye
F.


| 1 | /* =========================================================== | |
| 2 | * JFreeChart : a free chart library for the Java(tm) platform | |
| 3 | * =========================================================== | |
| 4 | * | |
| 5 | * (C) Copyright 2000-2008, by Object Refinery Limited and Contributors. | |
| 6 | * | |
| 7 | * Project Info: http://www.jfree.org/jfreechart/index.html | |
| 8 | * | |
| 9 | * This library is free software; you can redistribute it and/or modify it | |
| 10 | * under the terms of the GNU Lesser General Public License as published by | |
| 11 | * the Free Software Foundation; either version 2.1 of the License, or | |
| 12 | * (at your option) any later version. | |
| 13 | * | |
| 14 | * This library is distributed in the hope that it will be useful, but | |
| 15 | * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY | |
| 16 | * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public | |
| 17 | * License for more details. | |
| 18 | * | |
| 19 | * You should have received a copy of the GNU Lesser General Public | |
| 20 | * License along with this library; if not, write to the Free Software | |
| 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, | |
| 22 | * USA. | |
| 23 | * | |
| 24 | * [Java is a trademark or registered trademark of Sun Microsystems, Inc. | |
| 25 | * in the United States and other countries.] | |
| 26 | * | |
| 27 | * ------------------------- | |
| 28 | * DateTickMarkPosition.java | |
| 29 | * ------------------------- | |
| 30 | * (C) Copyright 2003-2008, by Object Refinery Limited. | |
| 31 | * | |
| 32 | * Original Author: David Gilbert (for Object Refinery Limited); | |
| 33 | * Contributor(s): -; | |
| 34 | * | |
| 35 | * Changes: | |
| 36 | * -------- | |
| 37 | * 30-Apr-2003 : Version 1 (DG); | |
| 38 | * | |
| 39 | */ | |
| 40 | ||
| 41 | package org.jfree.chart.axis; | |
| 42 | ||
| 43 | import java.io.ObjectStreamException; | |
| 44 | import java.io.Serializable; | |
| 45 | ||
| 46 | /** | |
| 47 | * Used to indicate the required position of tick marks on a date axis relative | |
| 48 | * to the underlying time period. | |
| 49 | */ | |
| 50 | public final class DateTickMarkPosition implements Serializable { | |
| 51 | ||
| 52 | /** For serialization. */ | |
| 53 | private static final long serialVersionUID =<PHONE_NUMBER>764537240L; | |
| 54 | ||
| 55 | /** Start of period. */ | |
| 56 | public static final DateTickMarkPosition START | |
| 57 | = new DateTickMarkPosition("DateTickMarkPosition.START"); | |
| 58 | ||
| 59 | /** Middle of period. */ | |
| 60 | public static final DateTickMarkPosition MIDDLE | |
| 61 | = new DateTickMarkPosition("DateTickMarkPosition.MIDDLE"); | |
| 62 | ||
| 63 | /** End of period. */ | |
| 64 | public static final DateTickMarkPosition END | |
| 65 | = new DateTickMarkPosition("DateTickMarkPosition.END"); | |
| 66 | ||
| 67 | /** The name. */ | |
| 68 | private String name; | |
| 69 | ||
| 70 | /** | |
| 71 | * Private constructor. | |
| 72 | * | |
| 73 | * @param name the name. | |
| 74 | */ | |
| 75 | private DateTickMarkPosition(String name) { | |
| 76 | this.name = name; | |
| 77 | } | |
| 78 | ||
| 79 | /** | |
| 80 | * Returns a string representing the object. | |
| 81 | * | |
| 82 | * @return The string. | |
| 83 | */ | |
| 84 | public String toString() { | |
| 85 |
1
1. toString : mutated return of Object value for org/jfree/chart/axis/DateTickMarkPosition::toString to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return this.name; |
| 86 | } | |
| 87 | ||
| 88 | /** | |
| 89 | * Returns true if this object is equal to the specified | |
| 90 | * object, and false otherwise. | |
| 91 | * | |
| 92 | * @param obj the other object. | |
| 93 | * | |
| 94 | * @return A boolean. | |
| 95 | */ | |
| 96 | public boolean equals(Object obj) { | |
| 97 | ||
| 98 |
1
1. equals : negated conditional → KILLED |
if (this == obj) { |
| 99 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return true; |
| 100 | } | |
| 101 |
1
1. equals : negated conditional → KILLED |
if (!(obj instanceof DateTickMarkPosition)) { |
| 102 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 103 | } | |
| 104 | DateTickMarkPosition position = (DateTickMarkPosition) obj; | |
| 105 |
1
1. equals : negated conditional → KILLED |
if (!this.name.equals(position.toString())) { |
| 106 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return false; |
| 107 | } | |
| 108 |
1
1. equals : replaced return of integer sized value with (x == 0 ? 1 : 0) → KILLED |
return true; |
| 109 | ||
| 110 | } | |
| 111 | ||
| 112 | /** | |
| 113 | * Ensures that serialization returns the unique instances. | |
| 114 | * | |
| 115 | * @return The object. | |
| 116 | * | |
| 117 | * @throws ObjectStreamException if there is a problem. | |
| 118 | */ | |
| 119 | private Object readResolve() throws ObjectStreamException { | |
| 120 |
1
1. readResolve : negated conditional → KILLED |
if (this.equals(DateTickMarkPosition.START)) { |
| 121 |
1
1. readResolve : mutated return of Object value for org/jfree/chart/axis/DateTickMarkPosition::readResolve to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return DateTickMarkPosition.START; |
| 122 | } | |
| 123 |
1
1. readResolve : negated conditional → KILLED |
else if (this.equals(DateTickMarkPosition.MIDDLE)) { |
| 124 |
1
1. readResolve : mutated return of Object value for org/jfree/chart/axis/DateTickMarkPosition::readResolve to ( if (x != null) null else throw new RuntimeException ) → KILLED |
return DateTickMarkPosition.MIDDLE; |
| 125 | } | |
| 126 |
1
1. readResolve : negated conditional → NO_COVERAGE |
else if (this.equals(DateTickMarkPosition.END)) { |
| 127 |
1
1. readResolve : mutated return of Object value for org/jfree/chart/axis/DateTickMarkPosition::readResolve to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return DateTickMarkPosition.END; |
| 128 | } | |
| 129 |
1
1. readResolve : mutated return of Object value for org/jfree/chart/axis/DateTickMarkPosition::readResolve to ( if (x != null) null else throw new RuntimeException ) → NO_COVERAGE |
return null; |
| 130 | } | |
| 131 | ||
| 132 | ||
| 133 | } | |
Mutations | ||
| 85 |
1.1 |
|
| 98 |
1.1 |
|
| 99 |
1.1 |
|
| 101 |
1.1 |
|
| 102 |
1.1 |
|
| 105 |
1.1 |
|
| 106 |
1.1 |
|
| 108 |
1.1 |
|
| 120 |
1.1 |
|
| 121 |
1.1 |
|
| 123 |
1.1 |
|
| 124 |
1.1 |
|
| 126 |
1.1 |
|
| 127 |
1.1 |
|
| 129 |
1.1 |


{% extends 'base.html' %} {% block title %}Login - Human Activity Recognition{% endblock %} {% block content %}
Please enter your email and password to login.


General Information¶
This chapter contains general information about the Ring programming language
- Ring Architecture
- Memory Management
- Data Representation
Ring Architecture¶
We have the next architecture
- Ring Applications (Your Code) - Written in Ring - See folder : ring/applications
- Ring Libraries (StdLib, WebLib, GameEngine, etc) - Written in Ring - See folder : ring/ringlibs
- Ring Extensions (RingAllegro, RingQt, etc) - Written in C/C++ (may include Ring code) - See folder : ring/extensions
- Ring Virtual Machine (Ring VM) - Written in C language
- Operating System (Current Platform) - (Windows, Linux, macOS, Android, etc)
The extensions are just dynamic libraries (DLL, So, Dylib) You can update the extensions without the need to update your code.
Folder (ringlibdepwin) ====> C libraries used for building Ring Extensions (written in C) on Windows platform.
Folder (ringringlibs) ====> Ring libraries written in Ring itself (StdLib, WebLib, GameEngine, etc)
Folder (ringrnoteexe) ====> Just C source file to create executable file that will run rnote.ring
Folder (ringvisualsrc) ====> The Visual Source Code of the Ring Compiler & Ring VM developed using Programming Without Coding Technology (PWCT)
We use the term Ring Library —> When the library code is written in Ring We use the term Ring Extension —> When the library code is Written in C or C++
Memory Management¶
- When we call function, we get a new scope for this function, inside this scope we store variables.
Also we get Temp. memory for this function. Inside this temp. memory we store temp. lists
All of this will be deleted directly after the end of the function call (end of scope)
- In Ring to delete memory, you have the next options
2.1 Wait until the end of the function scope
2.2 Use the Assignment operator
2.3 Use callgc() function (delete temp. lists only)
- Ring Garbage Collector uses Escape Analysis and Reference Counting
In 90% of cases, the Escape Analysis is used so we don’t waste time in running the garbage collector We directly know what will be deleted and what will remain in the memory.
https://en.wikipedia.org/wiki/Escape_analysis
In 10% of cases (or less than that) Ring may use Reference Counting.
For example when we pass a list and sub list to a function Ring will pass the lists by reference, but what will happens if we deleted the Parent List? In this case, the Sub List will use reference counting, and when deleting the Parent List, it will stay in memory until the end of the function.
Remember that Ring encourage us to avoid using references, and the Assignment Operator will copy lists by value, so Ring usage of reference counting is very limited to special cases and in most cases the Escape Analysis is enough which is very fast.
Starting from Ring 1.9 we extended the Reference Counting support to Ring Extensions and low level C pointers. So we don’t have to care about using fclose() when we use fopen() for example. and the same for other extensions like RingODBC, RingSQLite, RingMySQL, RingQt, etc.
All of the allocated resources will be cleaned by the Garbage Collector when we finish using it (when we lost the last reference).
Data Representation¶
- In Ring, The String is just (Array of bytes)
Ring is 8-bit clean, Each character in the string is 8 bits (1 byte)
So these functions (Int2Bytes(), Float2Bytes() and Double2Bytes()) just return a string.
Also we can store binary data in strings
mystring = read("myfile.exe")
- Remember this, when you think about variables
- Value —> What we have (What we are storing in the computer memory as data) - Low Level Concept
- Type —> What we can do with what we have or how we do things with what we have (Just a Logical Concept)
Computer memory —-> Just store [Bytes] - Each byte is 8-bit - (Here we avoid the memory word concept)
These bytes could be grouped together when moved between the memory and the processor registers. Here we have (The register size) and things like 32-bit and 64-bit for example. Also we have the bytes order.
Programming Languages —-> Add Types (Just as a concept) to these bytes so we can determine what to do with them and how operations should be done.
And programming language could allow (Type Conversion) —> Because the Type is a logical concept in most cases, What we really have is just data (Bytes, Bytes Count, Bytes Order, etc)
Ring Stings —-> You have these bytes (each byte is 8-bit) and Ring know the string size (stored as number in the String structure)
So we don’t check the NULL character or add it to the end of the string (Not Required)
All operations inside Ring VM, will check the Ring size and deal with the string as binary data (each character is 8-bit)
In the C language —> The normal case is adding NULL character (0) to the end of each string
And the string functions check this character, This is not suitable for binary data.
Signed vs Unsigned —> Is a logical concept which is important when you do arithmetic operations on the data, but when storing the data, if you will include all of the (8-bits) and will not ignore any of them —> Then don’t care.
In Ring, don’t think about these details, we are hiding it from you, so you can focus on your application and what you will do.
- Think in C when you write C code which could be (based on need) low level code to have control on everything.
- —-> Good for performance and memory management
Think in Ring when you write Ring code which let you ignore a lot of details and concentrate only on the result —–> Good for productivity and delivering software quickly
The good news (We can mix between Ring and C in our projects)
- The functions Int2Bytes(), Float2Bytes() and Double2Bytes()
These function take input as (Number) —> Convert it to group of bytes based on the number type (int|float|double) —> Then return a Ring string that contains these bytes
Int2Bytes() —> Ring string (Group of bytes) and the string size = sizeof(int)
Float2Bytes() —> Ring string (Group of bytes) and the string size = sizeof(float)
Double2Bytes() —> Ring string (Group of bytes) and the string size = sizeof(double)
Example:
? len( int2bytes(1) )
? len( float2bytes(1) )
? len( double2bytes(1) )
Output:
4
4
8
- Storing Numbers
When we use a number, Ring always use the (Double) data type for representing these numbers in memory. This is important to know when we do arithmetic operations on numbers.
But when we convert the number to a String using “” + number or using string(number) we get a string where each digit is represented in 1 byte (Not good idea for storage, but useful for string processing)
If you need the number to be represented in specific size (int|float|double) for storage then use bytes2int() , bytes2float() and bytes2double() when writing the data to binary files.
Ring Number (double) —-> int2bytes() - will cast the number from double to int then return the bytes —-> 4 bytes (Ring String)
Ring Number (double) —-> float2bytes() - will cast the number from double to float then return the bytes —-> 4 bytes (Ring String)
Ring Number (double) —-> double2bytes() - will use the number (double) to return the bytes —-> 8 bytes (Ring String)
The (int) type is used only for internal Ring operations, but Ring applications|code will use only the (double) type for numbers.
- The Unsigned() Function
The function unsigned() expect the first and the second parameters as numbers
unsigned(nNumber1,nNumber2,cOperator)
We can use the bytes2int() function to convert the bytes to a number
Example:
B = list(4)
for k=1 to 4
{
B[k]= Space(4)
for kk=1 to 4 { B[k][kk]= char(60+4*k +kk) }
? " B" +k +": " +B[k]
}
A12= Space(4) A12= bytes2int(B[1]) ^ bytes2int(B[2])
? "A12: " +string(A12)
A34= Space(4) A34= bytes2int(B[3]) ^ bytes2int(B[4])
? "A34: " +string(A34)
A12= space(4) A12= Unsigned(bytes2int(B[1]),bytes2int(B[2]),"^")
? "unsigned A12: " +A12
A34= space(4) A34= Unsigned(bytes2int(B[3]),bytes2int(B[4]),"^")
? "unsigned A34: " +A34
Output:
B1: ABCD
B2: EFGH
B3: IJKL
B4: MNOP
A12: 201589764
A34: 470025220
unsigned A12: 201589764
unsigned A34: 470025220


We highly encourage ALL #privacycoin users to ask their projects these Q's
There are many ways to violate privacy including hacks, force and subpoena
Pirate is a native only zaddr send, only blockchain, ensuring that once pirate is sent from mining, it is never again tra...


Welcome {{user_name}}
Thank you for Registering
Below are your details:
Login Id:{{login_id}}
Password:{{password}}
Click here to Acess the site


Gottesdienste der Ev. Kirchengemeinde Development
To view this video please enable JavaScript, and consider upgrading to a web browser that


Head1
Styled HTML Paragraph
The WHO was founded in 1948.
Written by John Doe.
Visit us at:
Example.com
Box 564, Disneyland
USA
The Scream by Edvard Munch. Painted in 1893.
This text will be written from right to left
هذا النص مكتوب باللغة العربية من اليمين لليسار
Hello World
Absolute URLS
Click Me
My personal website
Relative URLS
Heading
Paragraph
Pre formated text
Text formatting
Quotations
Colors
Admin Dashboard
Admin Area
Images
Email Link
Contact Me
Visit our HTML Tutorial


-
Achievements
Installation of 1.5 kWp solar power plant in the Government Girls’ Higher Secondary School.
ReadThe variety of activities supported under the CSIE banner are evident from the reports in this edition of the Newsletter--- from an Entrepreneurship Awareness Camp to a joint certificate course on “Product Design and Development” to a Business Plan workshop followed by a competition for college students. The extensive involvement of IITM faculty and alumni in these initiatives is clearly indicative of the grass-roots support that social innovation & entrepreneurship enjoy on campus. Equally impressive is the array of partnering institutions, both within and external to IIT Madras.
The partnership between CSIE and RuTAG is beginning to pay dividends, and is expected to greatly facilitate the entry of technology- based solutions into rural communities in an expeditious manner. A burgeoning relationship between CSIE and PALS (PanIIT Alumni Leadership Series) is a development with significant potential for enabling affiliated colleges to access the social enterprise ecosystem at IIT Madras.
The EWB-IITM chapter started in 2012 with the motivation to contribute to society. Venkatesh talks eloquently about how we as engineers have been incredibly lucky to receive an excellent education and be assured of a good livelihood. Given that many Indians do not have the facilities and luxury that we enjoy, EWB hopes to reach out to rural areas – tribal villages, in particular.
The pilot phase of the solar power project (external media coverage of which can be found here and here), installed at the Government Girls’ Higher Secondary School in Ashok Nagar, covers a block of 12 classrooms where nearly 600 girl students, most of whom are from economically weaker sections of society, study. The lights and fans in the classrooms are replaced with specially designed DC lights and fans which consume about 50% less power compared to their AC counterparts. Since the entire system works on DC, the AC to DC conversion loss is avoided too. As a result, a DC power plant with a rated capacity of 1.5 kW is suffcient to power up an entire block, which would have otherwise required solar panels to generate around 8 kW power if conventional AC-based technologies had been used. The unique DC-based technology was developed at IIT Madras by Dr. Ashok Jhunjhunwala, Professor in the Department of Electrical Engineering.
Minister of State with Independent Charge for Power, Coal, New and Renewable energy (MNRE) and Mines, Govt. of India, Sh. Piyush Goyal, visited the IIT Madras campus and Research Park on 15 July 2016. He formally inaugurated the innovative solar-DC products INVERTERLESS and appliances, developed by IITM and its incubated renewable energy companies, and the Green Building cooling system along with the Insulated Thermal Storage tank at the Research Park, as well as laid the foundation stone for the Centre for Battery Engineering and Electric Vehicles.
Inaugurating of the Green Technology innovations at IIT Madras, Sh.Goyal said, "Today's showcase of innovative green technology research at IIT Madras highlights a new kind of partnership made possible by IIT Madras between Public-Private-Professor-People (PPPP). These technologies can make uninterrupted power accessible and affordable for the poor and aligns with the Government's commitment to make power available to every home in India. These technologies are a significant leap towards India achieving energy security goals."
The idea of setting up a solar power plant was hit upon by a group of IIT Madras students, also a part of the IIT-M chapter of the NGO 'Engineers Without Borders' (EWB). The panel was installed at a total cost of 7 lakh on top of 'G' block which houses 12 classrooms occupied by more than 500 Class 12 students.
"We took up the solar project in 2014 and approached the school to power one block as a pilot project. We are going to monitor the power supply for the next six months before replicating it to the remaining four blocks in the school where nearly 3,600 girls study," said Vijender Singh, a third year student of IIT. The students hope to install solar panels in other government schools too.


Hi guys.
I'm having serious problems with setup, I can't receive anything in my remote account from emoncms (also, my RFM12Pi don't flash).
I've created some nodes using the API, but I can't get them to update, so I'm not receiving any data at all.
My setup:
On the emonBase side I'm running: a Raspberry Pi [Model B.512] with a RFM12Pi [433Mhz] using the oem_gateway22oct2013 image.
On the emonTx side i'm running: an Arduino UNO [using Shield_CT1234.ino file from emonTxShield examples] with an emonTx Shield (v1.0) connected to two CT sensors.
--
Configs & Status:
Base side:
- I've installed the oemgateway image following this guide: http://emoncms.org/site/docs/raspberrypigateway
- The RFM12Pi lights only blinks when I power up the raspi.
- I've change the current settings in the oemgateway.conf file: [SGROUP = 210, FREQUENCY = 4, BASEID= 15 ]
- I've switch RPI on, kill the process for debug purposes and started by hand - you can see the output in the screenshots.
EmonTX side:
- Current settings are[FREQ RF12_433MHZ, NODEID = 10, NETWORKGROUP = 210]
- The emonTx Shield LED blinks, and you can see the result in the screenshot from serial monitor.
--
Can anyone help me solving this problem? I've attached a lot of screenshots.
Thank you.
Re: Solved - Unable to communicate [UNO+EmonTX Shield with Raspi+RFM12Pi]
Solved!
Solution: RFM12B Slave Select (SS) Solder Jumper Setting was soldered incorrectly.
Thank you all anyway!


OSX builds faster
I noticed that when I'm at home on my (comparatively) old and slow MacBook (a Core Duo 1.8GHz with 2GB of RAM) that it takes ~30 seconds to build my work's project. At work, on my new and fast PC (Core 2 Duo (unsure, but faster) GHz, also with 2GB RAM, and RAID-speed drives, it can take from 35 seconds to 1 minute and 35 seconds.
On XP it appears to be related to the amount of free memory - if I kill firefox I seem to get the faster builds (but, clearly, am bored for those 30 seconds). If it were that simple I might stand up and y'know, stretch. But it's not clear if it is a RAM issue. There's no particular CPU load showing in the Windows Task Manager. I also thought if I disabled the virus scanner, that should help and it seems to, which is basically unnecessary on OSX.
So I was thinking, wouldn't it be nice to have a write-through ramdisk that would hopefully make the compilation and packaging CPU-bound (and fast RAM-bound) rather than slow disk-bound, and maybe pick up a couple of seconds on that compile. Easy to test - create a ramdisk, copy to and compile in the ramdisk.
Hmm... 35 seconds. I've seen shorter — I was expecting a speedup. I know, compile again and set it to the offline mode so mvn doesn't check for updated libraries. 28 seconds. That seems better. Ok, remove the ramdisk and try the hard disk: 35 seconds. Interesting. Compile again.... 29 seconds.
Ha, well, I guess OSX is smarter than I am. Or rather, I am 1 second smarter, but then less the time it takes to make sure that I persist everything I need to the hard drive later — woops, I lose!
This faq entry provides a bit of detail - basically OSX is caching the disk effectively. I was surprised that my source and build tree would fit effectively into the cache, but empirically that seems true. This underlines the fact that I knew to be true anyways - one of the biggest kicks you can give to an existing system for performance is memory.
Tomorrow morning I'll see how XP compares to OSX... Except I doubt I'll have enough RAM available to compile it and run all my tools, like Cygwin (a for free on OSX), virus scanners, etc. At least without an upgrade.
About this entry
You"re currently reading "OSX builds faster," an entry on a crick in the net
- Published:
- 01.28.07 / 11pm
- Category:
- Code Geekery
I used to run /var/tmp on a memory (MFS) filesystem to get a performance boost out of compiling with GCC (one of the few things that used /var/tmp instead of /tmp). I have no idea if it still works.
Theo is fond of pointing out that the most expensive operation a CPU does is a memory dereference. It's bad if you blow cache, and disastrous if you hit the pagefile.
But that reminds me– I need more RAM for the macbook.
Definitely bumping up to 2GB almost on day 1 was one of the best things I ever did.
Looking at some of the configurations for the Mac Pro and the XServe - topping out at 16GB and 32GB in the BTO options - and the RAM cost dwarfing the cost of the machine - well, I'm sure if you're paying that much you run out of RAM fast.


Identity Crisis
I do not think one should brag about his/her values.
Values are a very complex subject, I guess one is in a continious journey to discover, define and validate his values.
That the easy part
Creative
Resourcful
Quick Learner


9 reasons to come Holm for Christmas
Make your Christmas one to remember as luxury Penarth hotel Holm House transforms into a winter wonderland this Christmas
by Jonny DillonWhatever type of Christmas you’re looking for, Holm House Hotel can turn your Christmas wishes into reality. The Penarth-based property can cater for everything from those intimate gatherings to big Christmas parties.
Here are nine reasons why you should spend Christmas with Holm House.
1. Relax at Holm
Enjoy a pampered journey of relaxation and escape at Holm House Spa. Take a dip in the hydrotherapy pool, indulge with a luxurious Elemis treatment and then retire to the relaxation room with its terrace that boasts views across Windsor gardens and the Bristol channels.
Take advantage of Holm House’s festive spa package which includes a 60-minute treatment, full use of spa facilities, a two-course lunch in the restaurant and a glass of prosecco from only £89 this Christmas.
2. Sing your heart out at Holm
Pencil Tuesday December 10 into your diary and enjoy a night of Christmas carols from the Cardiff Bach Choir. Tickets include a delicious hot turkey, stuffing and cranberry baguette with a glass of mulled wine. Bring along family and friends for the ultimate festive cheer.
3. Feel at Holm
Holm House scooped the Best Boutique Wedding Venue in Wales at the Welsh National Wedding Awards this November. See what the hype is about for yourself and book a consultation with Holm House's wedding coordinators.
They’ll run through your vision and tell you more about the fabulous packages, menus and facilities. Imagine exclusive use of the picturesque Grade-II listed house which you can transform as you wish to realise your big day vision.
4. Shop ‘til you drop at Holm
Vouchers might seem an afterthought but a Holm House gift voucher is always received with delight. Treat a loved one to a specific package or monetary vouchers.
It doesn’t stop there either, Holm House also stocks luxurious gifts from Molton Brown, Elemis and La Sultane de Saba.
5. Stay at Holm
Christmas can be a frenzied time thanks to juggling Christmas parties and shopping on top of the pressures of everyday work and life. Escape to Holm House to discover a world of calm.
Enjoy a relaxing night’s sleep in one of the stylish suites, soak in your roll top bath, order room service, head to the spa or to the bar, it’s all up to you!
6. Eat at Holm
The best cuisine always begins with the finest ingredients and at Holm House you can expect to enjoy dishes focused on the very best of local and seasonal produce. Its festive menus have been lovingly created to ensure you have an unforgettable culinary experience when you indulge in lunch, dinner or festive afternoon tea at the AA Rosette restaurant. Don’t forget to treat yourself to one of South Wales’ best Sunday roasts too - they’re the stuff of legend. Be sure to book in advance to avoid disappointment.
7. Drink at Holm
Curl up by the open fire with a glass of mulled wine in hand and enjoy an intimate catch up or date night in the cosy Snug Room. The main cocktail bar offers a more buzzing atmosphere and boasts one of the best cocktail menus in the city, as well as an extensive wine and champagne list.
8. Party at Holm
Head to Holm House on Saturday December 20 for the festive party night where you can expect delicious food, DJ and live entertainment. You can also explore the exclusive hire options if you have a large party or corporate do to organise. Tables of two to 16 available.
9. Ring in the New Year at Holm
Start the new year as you mean to go on - in style! Holm House's New Years Eve gala dinner offers a lavish five-course menu from the AA rosette kitchen, a festive cocktail on arrival, table wine and live entertainment, from only £120 per person.
Suitable for just the two of you or a big group, the team will make the drinks and you can make the memories! There’s always the option to stay over too and truly immerse yourself in the Holm House experience.
For more information visit www.holmhousehotel.com or contact the Christmas coordinators direct on 02920 706029, events@holmhousehotel.co.uk


public class Configuration
extends java.lang.Object
WEIGHT_MUTATION_CHANCE=0.8 NODE_MUTATION_CHANCE=0.03 LINK_MUTATION_CHANCE=0.05 DISABLE_MUTATION_CHANCE=0.75 E_WEIGHT=1.0 D_WEIGHT=1.0 W_WEIGHT=0.4 COMPATABILITY_THRESHOLD=1.0 POPULATION_SIZE=150 GENERATIONS=1000 CROSSOVER_PROPORTION=0.75 DEPTH=3 STYLE_PATH={jar location}/styles RENDER_STYLE=normal
| Modifier and Type | Field and Description |
|---|---|
double |
compatabilityThreshold
The compatibility threshold used to determine whether a Genome qualifies as a member of a Species.
|
double |
crossoverProportion
The fraction of offspring which are created by crossing two Genomes.
|
int |
depth
The number of cycles to run each Genome for before reading a result.
|
double |
disableMutationChance
The chance of a disable mutation occurring.
|
double |
DWeight
A coefficient used to adjust the importance of the D term when calculating compatibility distance.
|
double |
EWeight
A coefficient used to adjust the importance of the E term when calculating compatibility distance.
|
int |
generations
The number of generations to run the NEAT algorithm for.
|
double |
linkMutationChance
The chance of a link mutation occurring.
|
double |
nodeMutationChance
The chance of a node mutation occurring.
|
int |
populationSize
The number of Genomes in each generation.
|
java.lang.String |
renderStyle
The name of the style that the GenomeRenderer will use to display Genomes.
|
java.lang.String |
stylePath
The full path that the GenomeRenderer will look for style sheets in.
|
double |
weightMutationChance
The chance of a weight mutation occurring.
|
double |
WWeight
A coefficient used to adjust the importance of the "W bar" term when calculating compatibility distance.
|
| Constructor and Description |
|---|
Configuration()
Creates a new Configuration with all parameters set to their default values.
|
Configuration(java.lang.String propertiesFile)
Creates a new Configuration from a properties file.
|
public final double weightMutationChance
public final double nodeMutationChance
public final double linkMutationChance
public final double disableMutationChance
public final double EWeight
public final double DWeight
public final double WWeight
public final double compatabilityThreshold
public final int populationSize
public final int generations
public final double crossoverProportion
public final int depth
public final java.lang.String stylePath
public final java.lang.String renderStyle
public Configuration(java.lang.String propertiesFile)
propertiesFile
- The path to the properties file.public Configuration()


button
checkbox
radio
submit
reset
datetime-local
email
month
number
password
url
week
tel
text
search
date
color
file
hidden
image
range
time


New draft of administrative rules for Mauna Kea released
HILO, Hawaii (AP) - The latest version of proposed administrative rules for the Big Island summit where a giant telescope is planned to be built have been released.
The Hawaii Tribune-Herald reports Friday that the new proposal was released along with a meeting plan.
The rules for Hawaii’s Mauna Kea have been a point of contention for some Native Hawaiians, including those opposed to the construction of the new telescope.
The University of Hawaii, which manages the land, says the rules are meant to “provide for the proper use, management and protection of cultural, natural, and scientific resources.”
Some who oppose the proposed rules say they could impede Hawaiian cultural practices and access to the summit. Protesters have been blocking telescope construction for months.
The Board of Regents will consider the proposal next week.
Information from: Hawaii Tribune-Herald, http://www.hawaiitribune-herald.com/
Sign up for Daily Newsletters
Copyright © 2019 The Washington Times, LLC.
Please read our comment policy before commenting.


Q: How are the passwords being stored on the server?
A: None of the passwords are stored on the server, instead a hash
generated from the password is stored, everytime a user tries to login,
the hash of the entered password is computed and compared with the
respective account's password. This method ensured that even in case the
server's get compromised, none of the passwords are leaked.


map(fn, seq1, seq2, ...)
Apply the function fn
to corresponding elements of the sequences seq1
, seq2 ...
and return a sequence of
the resulting values. The sequences, if finite, must be of the same length. Fn
should accept as many arguments as there are
sequences, should return a single value, and should not mutate the sequences.
map(abs, [1, -2, 3, -4, 5])
// [1, 2, 3, 4, 5]
map(`*`, [1, 2, 3, 4], [8, 7, 6, 5])
// [8, 14, 18, 20]
// mapping over infinite sequences:
function seq1(i) i:~seq1(i+1)
function seq2(i) i:~seq2(i+2)
let xs = seq1(10)
let ys = seq2(20)
let zs = map(add, xs, ys)
first(zs)
// 30
second(zs)
// 33
nth(10, zs)
// 60


Sewing is by far the rotation that I was the worst at.
This may have been due to the fact that I had limited use of my arm, or I am impatient.
Probably both.
Nevertheless, the sewing process is relatively easy and consistent.
In the end my pants turned out pretty well. The hardest part was sizing and leaving room for adjustment in the end.


{% include 'sidebar.html' %}
{% include 'header.html' %}
Loading
{% include 'modifyviz.html' %}
{% include 'examples.html' %}
{% include 'documentation.html' %}
Notification title
Subtitle text goes here.
Time stamp [00:00:00]


Whoops! The network is unavailable and this page is offline.
If you’re seeing this, you likely got here because your browser supports Service Workers, a web standard that helps me make things better for you when you don’t have an Internet connection. That means that it’s likely that at least some of this site’s content is available to you, even offline.
Try again from the home page or navigate using the pages we have saved.


This intention adds an array creation expression to an array initializer expression without one.
New in 10.5


|
Purchase Dux-Soup Points to automatically lookup email addresses of unconnected profiles.
|
||
| __title__ __desc__ | ||
| __title__ __desc__ | ||
| __title__ __desc__ | ||
| __title__ __desc__ |
|
To enable these lookups, during manual and automated profile visits, simply enable the relevant option in the "Automation Rules" on the options panel. Then download the CSV to access the email addresses. |
|
Terms & Conditions for Dux-Soup Points. Any Dux-Soup Points purchased, or awarded, are tied the Google Account used when purchasing. These points are ony usable in Dux-Soup Professional, and are only accessible by the user who is logged into Chrome with the exact same Google Account. These points are non-transferable and non-refundable. Check to confirm you understand and agree to these Terms & Conditions before completing your purchase. |


Great to be :gasp: back on the bike :huff: first time in 2017 :collapses: 🚲💨
1/26/2017, 8:45:39 AM
Favs: 5
Retweets: 0
link--- layout: tweet ---
Great to be :gasp: back on the bike :huff: first time in 2017 :collapses: 🚲💨
1/26/2017, 8:45:39 AM
Favs: 5
Retweets: 0
link


Viral video: People fall, run as a ‘T Rex’ charges at them in this prank
Prankster Goubran Bahou's latest video documents what people do when confronted by what seems like a small Tyrannosaurus Rex, that emerges from around a bend.
by Trends DeskA new prank video, featuring what looks like a dinosaur, has taken the internet by storm. Prankster Goubran Bahou’s latest video documents what people do when confronted by what looks like a small Tyrannosaurus Rex, that emerges from around a bend.
In the video, Bahou is first rounding a corner in panic. Curious passersby watch him run down the market street, but continue on their way. However, moments later, the big head of what looks like a dinosaur emerges from around the corner.
Some of the people turn and run, others fall and general hilarity ensues as the person wearing the inflatable dinosaur costume emerges. In one case, a man falls to the ground after spilling his lunch, and as the ‘dinosaur’ inches closer, he tries to fight it off with an umbrella.
The video was first shared on TikTok and Instagram by the prankster, but it later went viral on Twitter with over 20 million views. While many said that the video was hilarious, some extended their sympathies to those who fell. Many people admitted they might have reacted the same way.
This is hardly the first prank by the prankster to go viral. Here are some other posts by the prankster that were viewed globally:


Contoso University Application using ASP.NET Web API, Entity Framework, Angularjs & Generic Repository Patternn.
You can build the application by following the steps in the tutorial series on the ASP.NET site.
See the tutorial »
You can download the completed project from GitHub .
Download »


Module system
System module compliant with the CommonJS System/1.0 specification. Additional non-standard methods for sleeping on the current thread, spawning a new thread and spawning processes are provided.
args
An array of strings representing the command line arguments passed to the running script.
command ()
env
An object containing our environment variables.
exit (status)
Terminates the current process.
Parameters
| number | status | The exit status, defaults to 0. |
print ()
A utility function to write to stdout.
sleep (milliseconds)
Suspends the current process for the specified number of milliseconds.
Parameters
| Number | milliseconds | The number of milliseconds to sleep. |
stderr
A TextStream to write to stderr.
stdin
A TextStream to read from stdin.
stdout
A TextStream to write to stdout.


I step off the tram at Eminönü station, and I find myself thrown into the the riotous scene of life by the sea. A cacophony of sounds washes over my ears - hawkers in the midst of a transaction, families in energetic discussion, couples in huddled conversation. My nose too partakes in the experience, filled by the salty smell of the sea, the fishy odour from the moored boats selling balık-ekmek (a kind of grilled fish sandwich), and the fumes of gasoline coming from the ferries lining the busy pier.
I get onto the ferry for just 12 lira, and make my way to the upper deck. Despite the harsh summer sun beating down on the back of my neck, it’s not uncomfortably hot, with the cool air rising off the waters providing welcome respite.
On one side, the towering minarets and grandiose domes of the Sultanahmet district – the Hagia Sophia, the Blue Mosque. On the other, the hills of Galata and Beyoğlu, red-roofed houses crowding narrow streets.
First, the ferry stops at Ortaköy, the pier lined with European-style cafés and flanked by a majestic mosque. I’m immediately reminded of the contrasts that make up this city of the world’s desire. The crossroads of East and West for millennia, the results of this great melting pot are everywhere, a unique blend of occident and orient, of antique and modern, of Asian and European.
The boat then chugs out of the narrow inlet we call the Golden Horn, and out into the Bosphorus proper. One end leads to the Sea of Marmara, and beyond, to the Mediterranean and eventually the world. The other points the way to the Black Sea – to the northern heartlands of Ukraine and Russia.
The strait bustles with traffic, and I watch as a large ship carrying containers marked Yang Ming steam under the Sultan Mehmet bridge. I think back to the fleets of container ships that are a familiar sight off the coast of Singapore, and marvel. Some of these containers must surely have passed through Singapore, and like me, found themselves halfway around the world from home. I was heading home the next day, but these containers would continue on their journey north, presumably to ports at which they would be unloaded and sent across Europe.
Above us, lines of trucks trundle slowly across the bridge, carrying their wares not from north to south, but east to west. In all directions, people and goods hurry over and across the channel.
The rich history of this ancient city appears on either side of this modern bridge. A mosque on the shore, a stone tower further back. A medieval castle nestled amidst a forest. And in the distance, a fistful of skyscrapers, a reminder that for the long history that this city has had - Byzantium to Constantinople to Istanbul – and who knows what’s to come.
It’s not just us humans who inhabit the banks of this channel. I peer over the deck into the clear, blue waters, and watch the dark shadow of a school of fish darting about beneath. As the boat turns around, seabirds follow our crescent wake, swooping into the foamy waters trailing our engines, soaring above in the cloudless summer sky, catching pieces of bread thrown to them by passengers mid-air.
My thoughts are interrupted by a young boy selling drinks on the boat. Dondurma! Ice cream! Cold drinks! Kahve! I reach for my wallet – but ultimately decide against getting a coffee – I’d just had one a couple of hours before, and this stuff is strong. Disappointed, the boy disappears to the air-conditioned cabin below deck, leaving us tourists to brave the sun.
We finally make it back to Eminönü. I’m surprised, but the waters here are teeming with jellyfish, roiling in the turbulent flows generated by our turbines. Ropes are thrown to the dock and pulled over large stands. We close the gap, and the engines stop. The water’s calm again, the jellyfish returning to their peaceful drift.
 The constant rustling and bustling and hustling goes on.
Istanbul, Turkey


Interface for the AAX host's view of a single instance of an effect. Used by both clients of the AAXHost and by effect components.
|
| virtual AAX_Result | SendNotification (AAX_CTypeID inNotificationType, const void *inNotificationData, uint32_t inNotificationDataSize)=0 |
| | CALL: Dispatch a notification. More...
|
| |
| virtual AAX_Result | GetHybridSignalLatency (int32_t *outSamples) const =0 |
| | CALL: Returns the latency between the algorithm normal input samples and the inputs returning from the hyrbid component. More...
|
| |
| virtual AAX_Result | GetCurrentAutomationTimestamp (AAX_CTransportCounter *outTimestamp) const =0 |
| | CALL: Returns the current automation timestamp if called during the GenerateCoefficients() call AND the generation of coefficients is being triggered by an automation point instead of immediate changes. More...
|
| |
| virtual AAX_Result | GetHostName (AAX_IString *outHostNameString) const =0 |
| | CALL: Returns name of the host application this plug-in instance is being loaded by. This string also typically includes version information. More...
|
| |
| virtual AAX_Result | GetEffectID (AAX_IString *outEffectID) const =0 |
| |
| virtual AAX_Result | GetSampleRate (AAX_CSampleRate *outSampleRate) const =0 |
| | CALL: Returns the current literal sample rate. More...
|
| |
| virtual AAX_Result | GetInputStemFormat (AAX_EStemFormat *outStemFormat) const =0 |
| | CALL: Returns the plug-in's input stem format. More...
|
| |
| virtual AAX_Result | GetOutputStemFormat (AAX_EStemFormat *outStemFormat) const =0 |
| | CALL: Returns the plug-in's output stem format. More...
|
| |
| virtual AAX_Result | GetSignalLatency (int32_t *outSamples) const =0 |
| | CALL: Returns the most recent signal (algorithmic) latency that has been published by the plug-in. More...
|
| |
| virtual AAX_Result | GetCycleCount (AAX_EProperty inWhichCycleCount, AAX_CPropertyValue *outNumCycles) const =0 |
| | CALL: returns the plug-in's current real-time DSP cycle count. More...
|
| |
| virtual AAX_Result | GetTODLocation (AAX_CTimeOfDay *outTODLocation) const =0 |
| | CALL: Returns the current Time Of Day (TOD) of the system. More...
|
| |
| virtual AAX_Result | SetSignalLatency (int32_t inNumSamples)=0 |
| | CALL: Submits a request to change the delay compensation value that the host uses to account for the plug-in's signal (algorithmic) latency. More...
|
| |
| virtual AAX_Result | SetCycleCount (AAX_EProperty *inWhichCycleCounts, AAX_CPropertyValue *iValues, int32_t numValues)=0 |
| | CALL: Indicates a change in the plug-in's real-time DSP cycle count. More...
|
| |
| virtual AAX_Result | PostPacket (AAX_CFieldIndex inFieldIndex, const void *inPayloadP, uint32_t inPayloadSize)=0 |
| | CALL: Posts a data packet to the host for routing between plug-in components. More...
|
| |
| virtual AAX_Result | GetCurrentMeterValue (AAX_CTypeID inMeterID, float *outMeterValue) const =0 |
| | CALL: Retrieves the current value of a host-managed plug-in meter. More...
|
| |
| virtual AAX_Result | GetMeterPeakValue (AAX_CTypeID inMeterID, float *outMeterPeakValue) const =0 |
| | CALL: Retrieves the currently held peak value of a host-managed plug-in meter. More...
|
| |
| virtual AAX_Result | ClearMeterPeakValue (AAX_CTypeID inMeterID) const =0 |
| | CALL: Clears the peak value from a host-managed plug-in meter. More...
|
| |
| virtual AAX_Result | GetMeterClipped (AAX_CTypeID inMeterID, AAX_CBoolean *outClipped) const =0 |
| | CALL: Retrieves the clipped flag from a host-managed plug-in meter. More...
|
| |
| virtual AAX_Result | ClearMeterClipped (AAX_CTypeID inMeterID) const =0 |
| | CALL: Clears the clipped flag from a host-managed plug-in meter. More...
|
| |
| virtual AAX_Result | GetMeterCount (uint32_t *outMeterCount) const =0 |
| | CALL: Retrieves the number of host-managed meters registered by a plug-in. More...
|
| |
| virtual AAX_Result | GetNextMIDIPacket (AAX_CFieldIndex *outPort, AAX_CMidiPacket *outPacket)=0 |
| | CALL: Retrieves MIDI packets for described MIDI nodes. More...
|
| |
| virtual BEGIN_ACFINTERFACE ACFRESULT ACFMETHODCALLTYPE | QueryInterface (const acfIID &iid, void **ppOut)=0 |
| | Returns pointers to supported interfaces. More...
|
| |
| virtual acfUInt32 ACFMETHODCALLTYPE | AddRef (void)=0 |
| | Increments reference count. More...
|
| |
| virtual acfUInt32 ACFMETHODCALLTYPE | Release (void)=0 |
| | Decrements reference count. More...
|
| |
| virtual AAX_Result AAX_IACFController_V2::SendNotification |
( |
AAX_CTypeID |
inNotificationType, |
|
|
const void * |
inNotificationData, |
|
|
uint32_t |
inNotificationDataSize |
|
) |
| |
|
pure virtual |
CALL: Dispatch a notification.
The notification is handled by the host and may be delivered back to other plug-in components such as the GUI or data model (via AAX_IEffectGUI::NotificationReceived() or AAX_IEffectParameters::NotificationReceived(), respectively) depending on the notification type.
The host may choose to dispatch the posted notification either synchronously or asynchronously.
See the AAX_ENotificationEvent documentation for more information.
This method is supported by AAX V2 Hosts only. Check the return code on the return of this function. If the error is AAX_ERROR_UNIMPLEMENTED, your plug-in is being loaded into a host that doesn't support this feature.
- Parameters
-
| [in] | inNotificationType | Type of notification to send |
| [in] | inNotificationData | Block of notification data |
| [in] | inNotificationDataSize | Size of inNotificationData , in bytes |


About Me
A Legendary Hello
Hello, I’m Carl Ntifo. Ever since I can remember, I've had a passion for building things and solving problems. That's what attracted me to software development, something I’ve been doing for 10 years. What’s more, the bespoke solutions I deliver are what keep my clients coming back for more...
Software Solutions built to fit your needs
I provide tailor made, bespoke technical solutions for all personal and business needs. Whether you’re looking at a personal branding project, you’re a small, medium or large sized business, I pride myself on creating the best custom web, mobile and software solutions. Whatever your project size, budget or timeframe, I’ll work hard to deliver on time and on budget.
My Experience
Over the past few years I’ve been created a number of innovative software solutions for brands such as Xenon Capital Limited, SquadSocial Ltd and Claflin University. I‘ve also developed my own app PedalPlan, which won a prestigious award at YRS2015.
Click here to view some of my successful projects. Or if you’re ready to discuss or brief me on a project, give me a call...


Second M1 crash worsens southbound delays, Gold Coast
by Monique StClairUPDATE @ 4.00pm | Paramedics have rushed to the scene of a multivehicle crash on the M1 this afternoon.
Two patients have been injured in the smash, which happened near the Reedy Creek exit around 3.30pm.
Delays are now back to Nerang on the M1.
EARLIER @3.30pm | A second crash on the M1 southbound has created a nightmare for motorists.
A multi-vehicle incident has just about blocked off all lanes near the Reedy Creek exit (exit 85)
It happened around 3.30pm.
Multiple vehicles were involved, with one turned sideways in the middle of the motorway.
It follows an incident earlier, where a truck and car collided in the southbound lanes through Palm Beach.
Motorists are being urged to avoid the area if possible.


Run MCMC either with or without parallel tempering turned on.
Minimum inputs include a data object, a data.frame of parameters, a
log-likelihood function and a log-prior function. Produces an object of
class drjacoby_output
, which contains all MCMC output along with
some diagnostics and a record of inputs.
run_mcmc( data, df_params, misc = list(), loglike, logprior, burnin = 1000, samples = 10000, rungs = 1, chains = 5, beta_manual = NULL, alpha = 1, target_acceptance = 0.44, cluster = NULL, coupling_on = TRUE, pb_markdown = FALSE, save_data = TRUE, save_hot_draws = FALSE, silent = FALSE )
| data | a named list of numeric data values. When using C++ likelihood
and/or prior these values are treated internally as doubles, so while
integer and Boolean values can be used, keep in mind that these will be
recast as doubles in the likelihood (i.e. |
|---|---|
| df_params | a data.frame of parameters (see |
| misc | optional list object passed to likelihood and prior. This can be useful for passing values that are not strictly data, for example passing a lookup table to the prior function. |
| loglike, logprior | the log-likelihood and log-prior functions used in the MCMC. Can either be passed in as R functions (not in quotes), or as character strings naming compiled C++ functions (in quotes). |
| burnin | the number of burn-in iterations. Automatic tuning of proposal standard deviations is only active during the burn-in period. |
| samples | the number of sampling iterations. |
| rungs | the number of temperature rungs used in the parallel tempering
method. By default, \(\beta\) values are equally spaced between 0 and 1,
i.e. \(\beta[i]=\) |
| chains | the number of independent replicates of the MCMC to run. If a
|
| beta_manual | vector of manually defined \(\beta\) values used in the
parallel tempering approach. If defined, this overrides the spacing defined
by |
| alpha | the likelihood for the ith heated chain is raised to the power \(\beta[i]^\alpha\), meaning we can use the \(\alpha\) parameter to concentrate rungs towards the start or the end of the temperature scale. |
| target_acceptance | Target acceptance rate. Should be between 0 and 1. Default of 0.44, set as optimum for unvariate proposal distributions. |
| cluster | option to pass in a cluster environment, allowing chains to be run in parallel (see package "parallel"). |
| coupling_on | whether to implement Metropolis-coupling over temperature
rungs. The option of deactivating coupling has been retained for general
interest and debugging purposes only. If this parameter is |
| pb_markdown | whether to run progress bars in markdown mode, meaning they are only updated when they reach 100% to avoid large amounts of output being printed to markdown files. |
| save_data | if |
| save_hot_draws | if |
| silent | whether to suppress all console output. |
Note that both data
and misc
are passed into
log-likelihood/log-prior functions *by reference*. This means if you modify
these objects inside the functions then any changes will persist.


--- layout: post bodyClass: gen-theme gen-drinking-list theme-simpsons title: "The Simpsons" date: 2016-11-24 01:00:00 last_modified_at: 2016-11-24 01:00:00 excerpt: "The Simpsons" categories: Television tags: The Simpsons, cartoon, comedy, drinking game image: feature: simpsons.jpg topPosition: 0px bgContrast: dark bgGradientOpacity: darker syntaxHighlighter: no ---
There are many types of marathons out there. Some like ones for running, others like ones for biking, my kind of marathon is drinking to the longest running cartoon of all time. I suggest starting season 1, episode 1 and re-live your childhood.


Family: Boy on life support after San Diego murder-suicide
by Associated PressSAN DIEGO (AP) — Family members say a 9-year-old San Diego boy who survived an apparent murder-suicide that left his parents and three brothers dead is on life support.
Police say the child’s father is suspected of shooting his sons and their mother before turning the gun on himself Saturday.
Investigators say the parents were estranged and the mother had obtained a restraining order against the father.
The Union-Tribune reports Sunday that family members set up a GoFundMe page to raise money for medical expenses. The posting says the boy remains in intensive care.
Officers found a 29-year-old woman, her 31-year-old husband and their 3-year-old son dead. Two boys, ages 5 and 11, died at hospitals.
The newspaper says police had gone to the house two weeks ago to “keep the peace” when the man came over to retrieve tools.


Whatever People Say I Am, That's What I'm Not (2006)
Favourite Worst Nightmare (2007)
Humbug (2009)
Suck It and See (2011)
AM (2013)
Tranquility Base HotelTranquility Base Hotel & Casino & Casino (2018)


Our team's name is The Fat Guys, which can describe all three of the team's members, and also the founders. Even though two of the members are skinny, we decided to keep the name - The Fat Guys as it allows us to find each other easily.
Through many tests I have taken, I found out that my personality is ENTP, which is Extraversion – Intuition – Thinking – Perception. My learning style is Visual. I see myself as an out-going person that can easily become friends with everyone. Besides, I am a quick-witted person, so I feel comfortable with giving ideas and opinions in every meeting. Energetic is the perfect adjective to describe what I like when I am facing an interesting problem. Aside from those good points, my problems is that I can easily be involved in conflicts, and I sometimes find it hard to focus.
My team have five members in total, which are I – Nhu, Dai, Quang, Duc and Maple. I am the only girl in the group, so sometimes I feel like an outcast, but since I am an extra extrovert, participating in a conversation has never been hard for me.
This is me - s3878533.
Nguyen Khoi Nguyen - s3884511 - INFP. Learning style: Auditory.
Nguyen Duc Dai - s3878023 - ESFP. Learning style: Auditory.
Tran Hau Duc - s3877327 - ISTP. Learning style: Tactile.
Nguyen Nhat Quang - s3863937 - INFJ. Learning style: Visual.
Although we do not share a lot of similarities, I still think my team is perfect. Ever since we met, we always feel super relaxed whenever we talk and share with each other. To tell you the truth, due to the fact that it is our first semester at RMIT, we did not form the team base on our personalities. Nevertheless, our team turned out perfectly, and the more we talk, the more compatible we feel.
My team contains every single aspect to form a perfect personality type, which I believe can lead us to our group’s success. Although three of our members are Introvert, I still acknowledges them as those who are active and sociable. We also share some interests like: sports, board games, online games and Japanese’s culture. And the most fascinating thing about us is that we all find IT interesting.
Three out of five trust in intuition instead of the observation – which is balanced among the group – this helps us to give ideal answers or absolute solutions to any problems.
Three out of five make decision depend on feeling and the other decide with logic. The fact is that, in real life, making decision often requires someone who is level-headed and can make unbiased resolution when standing between logic and consideration. But if there are also people with Thinking and Feeling personality in the group, it will help us to listen as much aspect and opinion about the story as possible in order to find the most satisfactory answer, and it may also help us avoiding conflict in team work too.
Except for Quang, the rest of our team’s personality belongs to Perception. The only difference between Perception and Judgment is that Perception is the way you understand a problem, and Judgement is how you react to the situation. Having both type of people in this feature is also a good thing.
I genuinely think that my team is wonderful. I hope that our project will success.


Manage Feeds
Manage Categories
|
Save
|
Cancel
Name
URL
Group
Max Items
Order
Exclude from unread count
Off
On
Add


The United States PostgreSQL Association (PgUS) is dedicated to providing a harassment-free experience for everyone.
We do not tolerate harassment of PgUS members in any form. Sexual language and imagery is not appropriate for any venue, including exhibition booths, talks and social events around PgUS. Members violating these rules may be sanctioned or expelled from the corporation without a refund at the discretion of the PgUS board of directors or members.
 Participants asked to stop any harassing behavior are expected to comply immediately.
If a participant engages in harassing behavior, the PgUS board of directors or members may take any action they deem appropriate, including ejection from the corporation with no refund. If you feel that you are being harassed, notice that someone else is being harassed, or have any other concerns, please contact a PgUS board member immediately.
Thank you for your help in making PgUS fun and enjoyable for everyone!
When you visit our website, our servers automatically log your IP address and/or host name.
We store information such as your email address, name and locality only if you decide to send us such information by completing a survey, or registering as a user on one of our sites. We collect this information to help us improve the content of our sites, customize the layout of our web pages and to contact people for technical and support purposes. We will not share your email address with other organizations unless required by law.
We may collect demographic and interest category information from people via surveys, volunteered information, suggestions from members, and other means. Our members may voluntarily provide information, including that regarding personal, interests, geography, and demographics. The purpose of this data collection is to ensure we continue to understand the needs and wants of the PostgreSQL US community, and therefore can provide the most relevant information, guides, and content.
By visiting our website and using our servers you agree to comply with the terms and conditions of this Acceptable Use Policy.
You may not use our website in connection with any activity that involves:


Calico Critters Wilder Panda Family
Calico Critters Biography Information
Mother Penelope is a nurse at Calico Critters Children's Hospital tending to broken bones and nasty colds.
Father Percival owns his own bamboo fence business. In his free time he helps the children practice for their next big performance.
Brother Phillip's favorite thing to do is tap dance. He has won many competitions and looks forward to the Cloverleaf Corners dance-off held each year.
Sister Priscilla loves to perform in plays. She has a lovely singing voice too. When she's done with her homework, she will join her friends to create original plays which they perform for anyone who will watch.


Syntax:
make-random-state &optional state => new-state
Arguments and Values:
state---a random state, or nil, or t. The default is nil.
new-state---a random state object.
Description:
Creates a fresh object of type random-state suitable for use as the value of *random-state*.
If state is a random state object, the new-state is a copy[5] of that object. If state is nil, the new-state is a copy[5] of the current random state. If state is t, the new-state is a fresh random state object that has been randomly initialized by some means.
Examples:
(let* ((rs1 (make-random-state nil)) (rs2 (make-random-state t)) (rs3 (make-random-state rs2)) (rs4 nil)) (list (loop for i from 1 to 10 collect (random 100) when (= i 5) do (setq rs4 (make-random-state))) (loop for i from 1 to 10 collect (random 100 rs1)) (loop for i from 1 to 10 collect (random 100 rs2)) (loop for i from 1 to 10 collect (random 100 rs3)) (loop for i from 1 to 10 collect (random 100 rs4)))) => ((29 25 72 57 55 68 24 35 54 65) (29 25 72 57 55 68 24 35 54 65) (93 85 53 99 58 62 2 23 23 59) (93 85 53 99 58 62 2 23 23 59) (68 24 35 54 65 54 55 50 59 49))
Side Effects: None.
Affected By: None.
Exceptional Situations:
Should signal an error of type type-error if state is not a random state, or nil, or t.
See Also:
Notes:
One important use of make-random-state is to allow the same series of pseudo-random numbers to be generated many times within a single program.


{% extends "../layout.html" %} {% block content %} BETA This is a new service – your feedback will help us to improve it. Home Unfiled documents Manage unfiled document Manage unfiled document Enter the case reference to file this document Case reference Cancel Delete this document {% endblock %}
BETA This is a new service – your feedback will help us to improve it.
Enter the case reference to file this document


Programming is awesome when having the tools
I come from a humble background
I decided to take Moringa course so that i know more about coding and be able to be employed
Reading,Swimming,Playing Piano
Coding school is awesome
one of the best key is success


Vim documentation: usr_07
main help file*usr_07.txt* For Vim version 7.2. Last change: 2006 Apr 24 VIM USER MANUAL - by Bram Moolenaar Editing more than one file No matter how many files you have, you can edit them without leaving Vim. Define a list of files to work on and jump from one to the other. Copy text from one file and put it in another one. |07.1| Edit another file |07.2| A list of files |07.3| Jumping from file to file |07.4| Backup files |07.5| Copy text between files |07.6| Viewing a file |07.7| Changing the file name Next chapter: |usr_08.txt| Splitting windows Previous chapter: |usr_06.txt| Using syntax highlighting Table of contents: |usr_toc.txt|
*07.1* Edit another file So far you had to start Vim for every file you wanted to edit. There is a simpler way. To start editing another file, use this command: :edit foo.txt You can use any file name instead of "foo.txt". Vim will close the current file and open the new one. If the current file has unsaved changes, however, Vim displays an error message and does not open the new file: E37: No write since last change (use ! to override) Note: Vim puts an error ID at the start of each error message. If you do not understand the message or what caused it, look in the help system for this ID. In this case: :help E37 At this point, you have a number of alternatives. You can write the file using this command: :write Or you can force Vim to discard your changes and edit the new file, using the force (!) character: :edit! foo.txt If you want to edit another file, but not write the changes in the current file yet, you can make it hidden: :hide edit foo.txt The text with changes is still there, but you can't see it. This is further explained in section |22.4|: The buffer list.
*07.2* A list of files You can start Vim to edit a sequence of files. For example: vim one.c two.c three.c This command starts Vim and tells it that you will be editing three files. Vim displays just the first file. After you have done your thing in this file, to edit the next file you use this command: :next If you have unsaved changes in the current file, you will get an error message and the ":next" will not work. This is the same problem as with ":edit" mentioned in the previous section. To abandon the changes: :next! But mostly you want to save the changes and move on to the next file. There is a special command for this: :wnext This does the same as using two separate commands: :write :next WHERE AM I? To see which file in the argument list you are editing, look in the window title. It should show something like "(2 of 3)". This means you are editing the second file out of three files. If you want to see the list of files, use this command: :args This is short for "arguments". The output might look like this: one.c [two.c] three.c These are the files you started Vim with. The one you are currently editing, "two.c", is in square brackets. MOVING TO OTHER ARGUMENTS To go back one file: :previous This is just like the ":next" command, except that it moves in the other direction. Again, there is a shortcut command for when you want to write the file first: :wprevious To move to the very last file in the list: :last And to move back to the first one again: :first There is no ":wlast" or ":wfirst" command though! You can use a count for ":next" and ":previous". To skip two files forward: :2next AUTOMATIC WRITING When moving around the files and making changes, you have to remember to use ":write". Otherwise you will get an error message. If you are sure you always want to write modified files, you can tell Vim to automatically write them: :set autowrite When you are editing a file which you may not want to write, switch it off again: :set noautowrite EDITING ANOTHER LIST OF FILES You can redefine the list of files without the need to exit Vim and start it again. Use this command to edit three other files: :args five.c six.c seven.h Or use a wildcard, like it's used in the shell: :args *.txt Vim will take you to the first file in the list. Again, if the current file has changes, you can either write the file first, or use ":args!" (with ! added) to abandon the changes. DID YOU EDIT THE LAST FILE? *arglist-quit* When you use a list of files, Vim assumes you want to edit them all. To protect you from exiting too early, you will get this error when you didn't edit the last file in the list yet: E173: 46 more files to edit If you really want to exit, just do it again. Then it will work (but not when you did other commands in between).
*07.3* Jumping from file to file To quickly jump between two files, press CTRL-^ (on English-US keyboards the ^ is above the 6 key). Example: :args one.c two.c three.c You are now in one.c. :next Now you are in two.c. Now use CTRL-^ to go back to one.c. Another CTRL-^ and you are back in two.c. Another CTRL-^ and you are in one.c again. If you now do: :next You are in three.c. Notice that the CTRL-^ command does not change the idea of where you are in the list of files. Only commands like ":next" and ":previous" do that. The file you were previously editing is called the "alternate" file. When you just started Vim CTRL-^ will not work, since there isn't a previous file. PREDEFINED MARKS After jumping to another file, you can use two predefined marks which are very useful: `" This takes you to the position where the cursor was when you left the file. Another mark that is remembered is the position where you made the last change: `. Suppose you are editing the file "one.txt". Somewhere halfway the file you use "x" to delete a character. Then you go to the last line with "G" and write the file with ":w". You edit several other files, and then use ":edit one.txt" to come back to "one.txt". If you now use `" Vim jumps to the last line of the file. Using `. takes you to the position where you deleted the character. Even when you move around in the file `" and `. will take you to the remembered position. At least until you make another change or leave the file. FILE MARKS In chapter 4 was explained how you can place a mark in a file with "mx" and jump to that position with "`x". That works within one file. If you edit another file and place marks there, these are specific for that file. Thus each file has its own set of marks, they are local to the file. So far we were using marks with a lowercase letter. There are also marks with an uppercase letter. These are global, they can be used from any file. For example suppose that we are editing the file "foo.txt". Go to halfway the file ("50%") and place the F mark there (F for foo): 50%mF Now edit the file "bar.txt" and place the B mark (B for bar) at its last line: GmB Now you can use the "'F" command to jump back to halfway foo.txt. Or edit yet another file, type "'B" and you are at the end of bar.txt again. The file marks are remembered until they are placed somewhere else. Thus you can place the mark, do hours of editing and still be able to jump back to that mark. It's often useful to think of a simple connection between the mark letter and where it is placed. For example, use the H mark in a header file, M in a Makefile and C in a C code file. To see where a specific mark is, give an argument to the ":marks" command: :marks M You can also give several arguments: :marks MCP Don't forget that you can use CTRL-O and CTRL-I to jump to older and newer positions without placing marks there.
*07.4* Backup files Usually Vim does not produce a backup file. If you want to have one, all you need to do is execute the following command: :set backup The name of the backup file is the original file with a ~ added to the end. If your file is named data.txt, for example, the backup file name is data.txt~. If you do not like the fact that the backup files end with ~, you can change the extension: :set backupext=.bak This will use data.txt.bak instead of data.txt~. Another option that matters here is 'backupdir'. It specifies where the backup file is written. The default, to write the backup in the same directory as the original file, will mostly be the right thing. Note: When the 'backup' option isn't set but the 'writebackup' is, Vim will still create a backup file. However, it is deleted as soon as writing the file was completed successfully. This functions as a safety against losing your original file when writing fails in some way (disk full is the most common cause; being hit by lightning might be another, although less common). KEEPING THE ORIGINAL FILE If you are editing source files, you might want to keep the file before you make any changes. But the backup file will be overwritten each time you write the file. Thus it only contains the previous version, not the first one. To make Vim keep the original file, set the 'patchmode' option. This specifies the extension used for the first backup of a changed file. Usually you would do this: :set patchmode=.orig When you now edit the file data.txt for the first time, make changes and write the file, Vim will keep a copy of the unchanged file under the name "data.txt.orig". If you make further changes to the file, Vim will notice that "data.txt.orig" already exists and leave it alone. Further backup files will then be called "data.txt~" (or whatever you specified with 'backupext'). If you leave 'patchmode' empty (that is the default), the original file will not be kept.
*07.5* Copy text between files This explains how to copy text from one file to another. Let's start with a simple example. Edit the file that contains the text you want to copy. Move the cursor to the start of the text and press "v". This starts Visual mode. Now move the cursor to the end of the text and press "y". This yanks (copies) the selected text. To copy the above paragraph, you would do: :edit thisfile /This vjjjj$y Now edit the file you want to put the text in. Move the cursor to the character where you want the text to appear after. Use "p" to put the text there. :edit otherfile /There p Of course you can use many other commands to yank the text. For example, to select whole lines start Visual mode with "V". Or use CTRL-V to select a rectangular block. Or use "Y" to yank a single line, "yaw" to yank-a-word, etc. The "p" command puts the text after the cursor. Use "P" to put the text before the cursor. Notice that Vim remembers if you yanked a whole line or a block, and puts it back that way. USING REGISTERS When you want to copy several pieces of text from one file to another, having to switch between the files and writing the target file takes a lot of time. To avoid this, copy each piece of text to its own register. A register is a place where Vim stores text. Here we will use the registers named a to z (later you will find out there are others). Let's copy a sentence to the f register (f for First): "fyas The "yas" command yanks a sentence like before. It's the "f that tells Vim the text should be place in the f register. This must come just before the yank command. Now yank three whole lines to the l register (l for line): "l3Y The count could be before the "l just as well. To yank a block of text to the b (for block) register: CTRL-Vjjww"by Notice that the register specification "b is just before the "y" command. This is required. If you would have put it before the "w" command, it would not have worked. Now you have three pieces of text in the f, l and b registers. Edit another file, move around and place the text where you want it: "fp Again, the register specification "f comes before the "p" command. You can put the registers in any order. And the text stays in the register until you yank something else into it. Thus you can put it as many times as you like. When you delete text, you can also specify a register. Use this to move several pieces of text around. For example, to delete-a-word and write it in the w register: "wdaw Again, the register specification comes before the delete command "d". APPENDING TO A FILE When collecting lines of text into one file, you can use this command: :write >> logfile This will write the text of the current file to the end of "logfile". Thus it is appended. This avoids that you have to copy the lines, edit the log file and put them there. Thus you save two steps. But you can only append to the end of a file. To append only a few lines, select them in Visual mode before typing ":write". In chapter 10 you will learn other ways to select a range of lines.
*07.6* Viewing a file Sometimes you only want to see what a file contains, without the intention to ever write it back. There is the risk that you type ":w" without thinking and overwrite the original file anyway. To avoid this, edit the file read-only. To start Vim in readonly mode, use this command: vim -R file On Unix this command should do the same thing: view file You are now editing "file" in read-only mode. When you try using ":w" you will get an error message and the file won't be written. When you try to make a change to the file Vim will give you a warning: W10: Warning: Changing a readonly file The change will be done though. This allows for formatting the file, for example, to be able to read it easily. If you make changes to a file and forgot that it was read-only, you can still write it. Add the ! to the write command to force writing. If you really want to forbid making changes in a file, do this: vim -M file Now every attempt to change the text will fail. The help files are like this, for example. If you try to make a change you get this error message: E21: Cannot make changes, 'modifiable' is off You could use the -M argument to setup Vim to work in a viewer mode. This is only voluntary though, since these commands will remove the protection: :set modifiable :set write
*07.7* Changing the file name A clever way to start editing a new file is by using an existing file that contains most of what you need. For example, you start writing a new program to move a file. You know that you already have a program that copies a file, thus you start with: :edit copy.c You can delete the stuff you don't need. Now you need to save the file under a new name. The ":saveas" command can be used for this: :saveas move.c Vim will write the file under the given name, and edit that file. Thus the next time you do ":write", it will write "move.c". "copy.c" remains unmodified. When you want to change the name of the file you are editing, but don't want to write the file, you can use this command: :file move.c Vim will mark the file as "not edited". This means that Vim knows this is not the file you started editing. When you try to write the file, you might get this message: E13: File exists (use ! to override) This protects you from accidentally overwriting another file.
Next chapter: |usr_08.txt| Splitting windows Copyright: see |manual-copyright| vim:tw=78:ts=8:ft=help:norl: top - main help file


If you are seeing this message after a few seconds, you may have content blocking enabled in your browser,
preventing the Find a scientist application from loading. For more information, see the documentation
on content blocking in your web browser, e.g.
Mozilla Firefox.


How to format your data return
You can use our online service to upload your data in a comma-separated values (CSV) file. Your data file should meet our data formatting rules. The system will check your file for formatting errors before it uploads it.
You can submit data covering up to 18 months in the past.
Sector specific data formatting rules
-
Landfill compliance monitoring
- 24 September 2016
- Guidance
-
Pollution inventory compliance monitoring
- 24 September 2016
- Guidance
-
LCP compliance monitoring
- 24 September 2016
- Guidance
-
REM compliance monitoring
- 24 September 2016
- Guidance


|
App Engine Python SDK
v1.6.9 rev.445
The Python runtime is available as an experimental Preview feature.
|
Public Member Functions | |
| def | __init__ |
| def | __str__ |
| def | __repr__ |
| def | advance |
| def | filter_query |
| def | filter_ndb_query |
| def | filter_datastore_query |
| def | make_directed_query |
| def | make_directed_ndb_query |
| def | make_directed_datastore_query |
| def | make_ascending_query |
| def | make_ascending_ndb_query |
| def | make_ascending_datastore_query |
| def | split_range |
| def | __hash__ |
| def | __cmp__ |
| def | compute_split_points |
| def | to_json |
Static Public Member Functions | |
| def | bisect_string_range |
| def | split_keys |
| def | guess_end_key |
| def | from_json |
Public Attributes | |
| direction | |
| key_start | |
| key_end | |
| include_start | |
| include_end | |
| namespace | |
Static Public Attributes | |
| string | DESC = "DESC" |
| string | ASC = "ASC" |
Represents a range of keys in the datastore. A KeyRange object represents a key range (key_start, include_start, key_end, include_end) and a scan direction (KeyRange.DESC or KeyRange.ASC).
| def google.appengine.ext.key_range.KeyRange.__init__ | ( | self, | |
key_start = None , |
|||
key_end = None , |
|||
direction = None , |
|||
include_start = True , |
|||
include_end = True , |
|||
namespace = None , |
|||
_app = None |
|||
| ) |
Initialize a KeyRange object. Args: key_start: The starting key for this range (db.Key or ndb.Key). key_end: The ending key for this range (db.Key or ndb.Key). direction: The direction of the query for this range. include_start: Whether the start key should be included in the range. include_end: Whether the end key should be included in the range. namespace: The namespace for this range. If None then the current namespace is used. NOTE: If NDB keys are passed in, they are converted to db.Key instances before being stored.
| def google.appengine.ext.key_range.KeyRange.__cmp__ | ( | self, | |
| other | |||
| ) |
Compare two key ranges. Key ranges with a value of None for key_start or key_end, are always considered to have include_start=False or include_end=False, respectively, when comparing. Since None indicates an unbounded side of the range, the include specifier is meaningless. The ordering generated is total but somewhat arbitrary. Args: other: An object to compare to this one. Returns: -1: if this key range is less than other. 0: if this key range is equal to other. 1: if this key range is greater than other.
| def google.appengine.ext.key_range.KeyRange.advance | ( | self, | |
| key | |||
| ) |
Updates the start of the range immediately past the specified key. Args: key: A db.Key or ndb.Key.
|
static |
Returns a string that is approximately in the middle of the range. (start, end) is treated as a string range, and it is assumed start <= end in the usual lexicographic string ordering. The output key mid is guaranteed to satisfy start <= mid <= end. The method proceeds by comparing initial characters of start and end. When the characters are equal, they are appended to the mid string. In the first place that the characters differ, the difference characters are averaged and this average is appended to the mid string. If averaging resulted in rounding down, and additional character is added to the mid string to make up for the rounding down. This extra step is necessary for correctness in the case that the average of the two characters is equal to the character in the start string. This method makes the assumption that most keys are ascii and it attempts to perform splitting within the ascii range when that results in a valid split. Args: start: A string. end: A string such that start <= end. Returns: A string mid such that start <= mid <= end.
| def google.appengine.ext.key_range.KeyRange.compute_split_points | ( | cls, | |
| kind, | |||
| count | |||
| ) |
Computes a set of KeyRanges that are split points for a kind. Args: kind: String with the entity kind to split. count: Number of non-overlapping KeyRanges to generate. Returns: A list of KeyRange objects that are non-overlapping. At most "count" + 1 KeyRange objects will be returned. At least one will be returned.
| def google.appengine.ext.key_range.KeyRange.filter_datastore_query | ( | self, | |
| query, | |||
filters = None |
|||
| ) |
Add query filter to restrict to this key range. Args: query: A datastore.Query instance. filters: optional list of filters to apply to the query. Each filter is a tuple: (<property_name_as_str>, <query_operation_as_str>, <value>). User filters are applied first. Returns: The input query restricted to this key range.
| def google.appengine.ext.key_range.KeyRange.filter_ndb_query | ( | self, | |
| query, | |||
filters = None |
|||
| ) |
Add query filter to restrict to this key range. Args: query: An ndb.Query instance. filters: optional list of filters to apply to the query. Each filter is a tuple: (<property_name_as_str>, <query_operation_as_str>, <value>). User filters are applied first. Returns: The input query restricted to this key range.
| def google.appengine.ext.key_range.KeyRange.filter_query | ( | self, | |
| query, | |||
filters = None |
|||
| ) |
Add query filter to restrict to this key range. Args: query: A db.Query or ndb.Query instance. filters: optional list of filters to apply to the query. Each filter is a tuple: (<property_name_as_str>, <query_operation_as_str>, <value>). User filters are applied first. Returns: The input query restricted to this key range.
|
static |
Deserialize KeyRange from its json representation. Args: json_str: string with json representation created by key_range_to_json. Returns: deserialized KeyRange instance.
|
static |
Guess the end of a key range with a binary search of probe queries. When the 'key_start' parameter has a key hierarchy, this function will only determine the key range for keys in a similar hierarchy. That means if the keys are in the form: kind=Foo, name=bar/kind=Stuff, name=meep only this range will be probed: kind=Foo, name=*/kind=Stuff, name=* That means other entities of kind 'Stuff' that are children of another parent entity kind will be skipped: kind=Other, name=cookie/kind=Stuff, name=meep Args: key_start: The starting key of the search range. In most cases this should be id = 0 or name = '\0'. May be db.Key or ndb.Key. kind: String name of the entity kind. probe_count: Optional, how many probe queries to run. split_rate: Exponential rate to use for splitting the range on the way down from the full key space. For smaller ranges this should be higher so more of the keyspace is skipped on initial descent. Returns: db.Key that is guaranteed to be as high or higher than the highest key existing for this Kind. Doing a query between 'key_start' and this returned Key (inclusive) will contain all entities of this Kind. NOTE: Even though an ndb.Key instance is accepted as argument, the return value is always a db.Key instance.
| def google.appengine.ext.key_range.KeyRange.make_ascending_datastore_query | ( | self, | |
| kind, | |||
keys_only = False , |
|||
filters = None |
|||
| ) |
Construct a query for this key range without setting the scan direction. Args: kind: A string. keys_only: bool, default False, use keys_only on Query? filters: optional list of filters to apply to the query. Each filter is a tuple: (<property_name_as_str>, <query_operation_as_str>, <value>). User filters are applied first. Returns: A datastore.Query instance.
| def google.appengine.ext.key_range.KeyRange.make_ascending_ndb_query | ( | self, | |
| kind_class, | |||
keys_only = False , |
|||
filters = None |
|||
| ) |
Construct an NDB query for this key range, without the scan direction. Args: kind_class: An ndb.Model subclass. keys_only: bool, default False, query only for keys. Returns: An ndb.Query instance.
| def google.appengine.ext.key_range.KeyRange.make_ascending_query | ( | self, | |
| kind_class, | |||
keys_only = False , |
|||
filters = None |
|||
| ) |
Construct a query for this key range without setting the scan direction. Args: kind_class: A kind implementation class (a subclass of either db.Model or ndb.Model). keys_only: bool, default False, query only for keys. filters: optional list of filters to apply to the query. Each filter is a tuple: (<property_name_as_str>, <query_operation_as_str>, <value>). User filters are applied first. Returns: A db.Query or ndb.Query instance (corresponding to kind_class).
| def google.appengine.ext.key_range.KeyRange.make_directed_datastore_query | ( | self, | |
| kind, | |||
keys_only = False |
|||
| ) |
Construct a query for this key range, including the scan direction. Args: kind: A string. keys_only: bool, default False, use keys_only on Query? Returns: A datastore.Query instance. Raises: KeyRangeError: if self.direction is not in (KeyRange.ASC, KeyRange.DESC).
| def google.appengine.ext.key_range.KeyRange.make_directed_ndb_query | ( | self, | |
| kind_class, | |||
keys_only = False |
|||
| ) |
Construct an NDB query for this key range, including the scan direction. Args: kind_class: An ndb.Model subclass. keys_only: bool, default False, use keys_only on Query? Returns: An ndb.Query instance. Raises: KeyRangeError: if self.direction is not in (KeyRange.ASC, KeyRange.DESC).
| def google.appengine.ext.key_range.KeyRange.make_directed_query | ( | self, | |
| kind_class, | |||
keys_only = False |
|||
| ) |
Construct a query for this key range, including the scan direction. Args: kind_class: A kind implementation class (a subclass of either db.Model or ndb.Model). keys_only: bool, default False, use keys_only on Query? Returns: A db.Query or ndb.Query instance (corresponding to kind_class). Raises: KeyRangeError: if self.direction is not in (KeyRange.ASC, KeyRange.DESC).
|
static |
Return a key that is between key_start and key_end inclusive. This method compares components of the ancestor paths of key_start and key_end. The first place in the path that differs is approximately split in half. If the kind components differ, a new non-existent kind halfway between the two is used to split the space. If the id_or_name components differ, then a new id_or_name that is halfway between the two is selected. If the lower id_or_name is numeric and the upper id_or_name is a string, then the minumum string key u'\0' is used as the split id_or_name. The key that is returned is the shared portion of the ancestor path followed by the generated split component. Args: key_start: A db.Key or ndb.Key instance for the lower end of a range. key_end: A db.Key or ndb.Key instance for the upper end of a range. batch_size: The maximum size of a range that should not be split. Returns: A db.Key instance, k, such that key_start <= k <= key_end. NOTE: Even though ndb.Key instances are accepted as arguments, the return value is always a db.Key instance.
| def google.appengine.ext.key_range.KeyRange.split_range | ( | self, | |
batch_size = 0 |
|||
| ) |
Split this key range into a list of at most two ranges. This method attempts to split the key range approximately in half. Numeric ranges are split in the middle into two equal ranges and string ranges are split lexicographically in the middle. If the key range is smaller than batch_size it is left unsplit. Note that splitting is done without knowledge of the distribution of actual entities in the key range, so there is no guarantee (nor any particular reason to believe) that the entities of the range are evenly split. Args: batch_size: The maximum size of a key range that should not be split. Returns: A list of one or two key ranges covering the same space as this range.
| def google.appengine.ext.key_range.KeyRange.to_json | ( | self | ) |
Serialize KeyRange to json. Returns: string with KeyRange json representation.


This site requires JavaScript to operate. If you wish, you may view a text-only version of these lists.


Well this is my first project. It is redundant to include; However, as more projects are completed it will finally be removed. It's an "Online Material Resume", it was in the curriculum I am/was following as a first practice of my newly learned HTML and CSS skills. One thing i didn't like that I didn't know how to or rather ways to use Javascript to make it better.
https://excuta.github.io/web_projects/Material Resume/