Active Python Releases
For more information visit the Python Developer's Guide.
Looking for a specific release?
Python releases by version number:
- Python 3.8.5 July 20, 2020 Download Release Notes
- Python 3.8.4 July 13, 2020 Download Release Notes
- Python 3.7.8 June 27, 2020 Download Release Notes
- Python 3.6.11 June 27, 2020 Download Release Notes
- Python 3.8.3 May 13, 2020 Download Release Notes
- Python 2.7.18 April 20, 2020 Download Release Notes
- Python 3.7.7 March 10, 2020 Download Release Notes
- Python 3.8.2 Feb. 24, 2020 Download Release Notes
- Python 3.8.1 Dec. 18, 2019 Download Release Notes
- Python 3.7.6 Dec. 18, 2019 Download Release Notes
- Python 3.6.10 Dec. 18, 2019 Download Release Notes
- Python 3.5.9 Nov. 2, 2019 Download Release Notes
- Python 3.5.8 Oct. 29, 2019 Download Release Notes
- Python 2.7.17 Oct. 19, 2019 Download Release Notes
- Python 3.7.5 Oct. 15, 2019 Download Release Notes
- Python 3.8.0 Oct. 14, 2019 Download Release Notes
- Python 3.7.4 July 8, 2019 Download Release Notes
- Python 3.6.9 July 2, 2019 Download Release Notes
- Python 3.7.3 March 25, 2019 Download Release Notes
- Python 3.4.10 March 18, 2019 Download Release Notes
- Python 3.5.7 March 18, 2019 Download Release Notes
- Python 2.7.16 March 4, 2019 Download Release Notes
- Python 3.7.2 Dec. 24, 2018 Download Release Notes
- Python 3.6.8 Dec. 24, 2018 Download Release Notes
- Python 3.7.1 Oct. 20, 2018 Download Release Notes
- Python 3.6.7 Oct. 20, 2018 Download Release Notes
- Python 3.5.6 Aug. 2, 2018 Download Release Notes
- Python 3.4.9 Aug. 2, 2018 Download Release Notes
- Python 3.7.0 June 27, 2018 Download Release Notes
- Python 3.6.6 June 27, 2018 Download Release Notes
- Python 2.7.15 May 1, 2018 Download Release Notes
- Python 3.6.5 March 28, 2018 Download Release Notes
- Python 3.4.8 Feb. 5, 2018 Download Release Notes
- Python 3.5.5 Feb. 5, 2018 Download Release Notes
- Python 3.6.4 Dec. 19, 2017 Download Release Notes
- Python 3.6.3 Oct. 3, 2017 Download Release Notes
- Python 3.3.7 Sept. 19, 2017 Download Release Notes
- Python 2.7.14 Sept. 16, 2017 Download Release Notes
- Python 3.4.7 Aug. 9, 2017 Download Release Notes
- Python 3.5.4 Aug. 8, 2017 Download Release Notes
- Python 3.6.2 July 17, 2017 Download Release Notes
- Python 3.6.1 March 21, 2017 Download Release Notes
- Python 3.4.6 Jan. 17, 2017 Download Release Notes
- Python 3.5.3 Jan. 17, 2017 Download Release Notes
- Python 3.6.0 Dec. 23, 2016 Download Release Notes
- Python 2.7.13 Dec. 17, 2016 Download Release Notes
- Python 3.4.5 June 27, 2016 Download Release Notes
- Python 3.5.2 June 27, 2016 Download Release Notes
- Python 2.7.12 June 25, 2016 Download Release Notes
- Python 3.4.4 Dec. 21, 2015 Download Release Notes
- Python 3.5.1 Dec. 7, 2015 Download Release Notes
- Python 2.7.11 Dec. 5, 2015 Download Release Notes
- Python 3.5.0 Sept. 13, 2015 Download Release Notes
- Python 2.7.10 May 23, 2015 Download Release Notes
- Python 3.4.3 Feb. 25, 2015 Download Release Notes
- Python 2.7.9 Dec. 10, 2014 Download Release Notes
- Python 3.4.2 Oct. 13, 2014 Download Release Notes
- Python 3.3.6 Oct. 12, 2014 Download Release Notes
- Python 3.2.6 Oct. 12, 2014 Download Release Notes
- Python 2.7.8 July 2, 2014 Download Release Notes
- Python 2.7.7 June 1, 2014 Download Release Notes
- Python 3.4.1 May 19, 2014 Download Release Notes
- Python 3.4.0 March 17, 2014 Download Release Notes
- Python 3.3.5 March 9, 2014 Download Release Notes
- Python 3.3.4 Feb. 9, 2014 Download Release Notes
- Python 3.3.3 Nov. 17, 2013 Download Release Notes
- Python 2.7.6 Nov. 10, 2013 Download Release Notes
- Python 2.6.9 Oct. 29, 2013 Download Release Notes
- Python 3.2.5 May 15, 2013 Download Release Notes
- Python 3.3.2 May 15, 2013 Download Release Notes
- Python 2.7.5 May 12, 2013 Download Release Notes
- Python 3.2.4 April 6, 2013 Download Release Notes
- Python 3.3.1 April 6, 2013 Download Release Notes
- Python 2.7.4 April 6, 2013 Download Release Notes
- Python 3.3.0 Sept. 29, 2012 Download Release Notes
- Python 3.2.3 April 10, 2012 Download Release Notes
- Python 2.6.8 April 10, 2012 Download Release Notes
- Python 2.7.3 April 9, 2012 Download Release Notes
- Python 3.1.5 April 9, 2012 Download Release Notes
- Python 3.2.2 Sept. 3, 2011 Download Release Notes
- Python 3.2.1 July 9, 2011 Download Release Notes
- Python 3.1.4 June 11, 2011 Download Release Notes
- Python 2.7.2 June 11, 2011 Download Release Notes
- Python 2.6.7 June 3, 2011 Download Release Notes
- Python 2.5.6 May 26, 2011 Download Release Notes
- Python 3.2.0 Feb. 20, 2011 Download Release Notes
- Python 2.7.1 Nov. 27, 2010 Download Release Notes
- Python 3.1.3 Nov. 27, 2010 Download Release Notes
- Python 2.6.6 Aug. 24, 2010 Download Release Notes
- Python 2.7.0 July 3, 2010 Download Release Notes
- Python 3.1.2 March 20, 2010 Download Release Notes
- Python 2.6.5 March 18, 2010 Download Release Notes
- Python 2.5.5 Jan. 31, 2010 Download Release Notes
- Python 2.6.4 Oct. 26, 2009 Download Release Notes
- Python 2.6.3 Oct. 2, 2009 Download Release Notes
- Python 3.1.1 Aug. 17, 2009 Download Release Notes
- Python 3.1.0 June 26, 2009 Download Release Notes
- Python 2.6.2 April 14, 2009 Download Release Notes
- Python 3.0.1 Feb. 13, 2009 Download Release Notes
- Python 2.5.4 Dec. 23, 2008 Download Release Notes
- Python 2.4.6 Dec. 19, 2008 Download Release Notes
- Python 2.5.3 Dec. 19, 2008 Download Release Notes
- Python 2.6.1 Dec. 4, 2008 Download Release Notes
- Python 3.0.0 Dec. 3, 2008 Download Release Notes
- Python 2.6.0 Oct. 2, 2008 Download Release Notes
- Python 2.3.7 March 11, 2008 Download Release Notes
- Python 2.4.5 March 11, 2008 Download Release Notes
- Python 2.5.2 Feb. 21, 2008 Download Release Notes
- Python 2.5.1 April 19, 2007 Download Release Notes
- Python 2.3.6 Nov. 1, 2006 Download Release Notes
- Python 2.4.4 Oct. 18, 2006 Download Release Notes
- Python 2.5.0 Sept. 19, 2006 Download Release Notes
- Python 2.4.3 April 15, 2006 Download Release Notes
- Python 2.4.2 Sept. 27, 2005 Download Release Notes
- Python 2.4.1 March 30, 2005 Download Release Notes
- Python 2.3.5 Feb. 8, 2005 Download Release Notes
- Python 2.4.0 Nov. 30, 2004 Download Release Notes
- Python 2.3.4 May 27, 2004 Download Release Notes
- Python 2.3.3 Dec. 19, 2003 Download Release Notes
- Python 2.3.2 Oct. 3, 2003 Download Release Notes
- Python 2.3.1 Sept. 23, 2003 Download Release Notes
- Python 2.3.0 July 29, 2003 Download Release Notes
- Python 2.2.3 May 30, 2003 Download Release Notes
- Python 2.2.2 Oct. 14, 2002 Download Release Notes
- Python 2.2.1 April 10, 2002 Download Release Notes
- Python 2.1.3 April 9, 2002 Download Release Notes
- Python 2.2.0 Dec. 21, 2001 Download Release Notes
- Python 2.0.1 June 22, 2001 Download Release Notes
Licenses
All Python releases are Open Source. Historically, most, but not all, Python releases have also been GPL-compatible. The Licenses page details GPL-compatibility and Terms and Conditions.
Sources
For most Unix systems, you must download and compile the source code. The same source code archive can also be used to build the Windows and Mac versions, and is the starting point for ports to all other platforms.
Alternative Implementations
This site hosts the "traditional" implementation of Python (nicknamed CPython). A number of alternative implementations are available as well.
History
Python was created in the early 1990s by Guido van Rossum at Stichting Mathematisch Centrum in the Netherlands as a successor of a language called ABC. Guido remains Python’s principal author, although it includes many contributions from others.
Release Schedules
Information about specific ports, and developer info
OpenPGP Public Keys
Source and binary executables are signed by the release manager or binary builder using their OpenPGP key. Release files for currently supported releases are signed by the following:
- Steve Dower (Windows binaries) (key id: FC62 4643 4870 34E5)
- Łukasz Langa (3.8.x source files and tags) (key id: B269 95E3 1025 0568)
- Ned Deily (macOS binaries, 3.7.x / 3.6.x source files and tags) (key ids: 2D34 7EA6 AA65 421D, FB99 2128 6F5E 1540, and Apple Developer ID DJ3H93M7VJ)
- Larry Hastings (3.5.x source files and tags) (key id: 3A5C A953 F73C 700D)
- Benjamin Peterson (2.7.z source files and tags) (key id: 04C3 67C2 18AD D4FF and A4135B38)
Release files for older releases which have now reached end-of-life may have been signed by one of the following:
- Anthony Baxter (key id: 0EDD C5F2 6A45 C816)
- Georg Brandl (key id: 0A5B 1018 3658 0288)
- Martin v. Löwis (key id: 6AF0 53F0 7D9D C8D2)
- Ronald Oussoren (key id: C9BE 28DE E6DF 025C)
- Barry Warsaw (key ids: 126E B563 A74B 06BF, D986 6941 EA5B BD71, and ED9D77D5)
You can import a person's public keys from a public keyserver network server you trust by running a command like:
gpg --recv-keys [key id]
or, in many cases, public keys can also be found at keybase.io. On the version-specific download pages, you should see a link to both the downloadable file and a detached signature file. To verify the authenticity of the download, grab both files and then run this command:
gpg --verify Python-3.6.2.tgz.asc
Note that you must use the name of the signature file, and you should use the one that's appropriate to the download you're verifying.
- (These instructions are geared to GnuPG and Unix command-line users.)
Other Useful Items
- Looking for 3rd party Python modules? The Package Index has many of them.
- You can view the standard documentation online, or you can download it in HTML, PostScript, PDF and other formats. See the main Documentation page.
- Information on tools for unpacking archive files provided on python.org is available.
- Tip: even if you download a ready-made binary for your platform, it makes sense to also download the source. This lets you browse the standard library (the subdirectory Lib) and the standard collections of demos (Demo) and tools (Tools) that come with it. There's a lot you can learn from the source!
- There is also a collection of Emacs packages that the Emacsing Pythoneer might find useful. This includes major modes for editing Python, C, C++, Java, etc., Python debugger interfaces and more. Most packages are compatible with Emacs and XEmacs.
Want to contribute?
Want to contribute? See the Python Developer's Guide to learn about how Python development is managed.


{% load staticfiles %}
NaturalTeas.com
How To
Home Page
Twistouts/braidouts
Braids/Addins
WashNgo
How To
Profile Page
Click the buttons to find available videos!
Braids/Addins
Twistout/Braidout
Wash 'n' Go
Braids/Addins
-->
-->
-->
Twistouts/Braidouts
-->
-->
-->
Wash 'n' Go's
-->
-->
-->


--- author: Colene Chow categories: app date: '2012-01-09 18:46:00' permalink: /2012/01/09/adobe-phonegap-named-2012-technology-of-the-year-by-infoworld-test-center/ slug: adobe-phonegap-named-2012-technology-of-the-year-by-infoworld-test-center status: publish title: Adobe PhoneGap named 2012 Technology of the Year by InfoWorld Test Center type: post format: html tags: - News ---
Today Adobe PhoneGap was named a 2012 Technology of the Year Award recipient by IDG’s InfoWorld Test Center! Selected by editors and reviewers from the InfoWorld Test Center, the annual awards identify the best and most innovative products on the IT landscape that were tested in the past year and PhoneGap was selected for being the leading open source mobile framework for cross-platform app development.
We are immensely proud of our team and community for haven been recognized by InfoWorld with this award. According to Andre Charland, Adobe’s director of engineering for PhoneGap, “We have a hardworking community contributing to PhoneGap and this award is a great recognition of their efforts.” Great work all!
PhoneGap is an open source development tool for building fast, easy, cross-platform mobilen apps with HTML5 and JavaScript. PhoneGap has been downloaded more than 600,000 times to date and thousands of applications built using PhoneGap are available in mobile app stores that span devices based on Android, iOS, BlackBerry and other operating systems.


| Package | Description |
|---|---|
| com.hazelcast.concurrent.lock | |
| com.hazelcast.map |
Contains Hazelcast map module classes.
|
| com.hazelcast.map.client |
Contains client requests for the
IMap |
| com.hazelcast.map.tx |
Contains implementation classes for
TransactionalMap |
| com.hazelcast.nio.serialization |
Contains interfaces/classes related to serialization;
such as serializer interfaces, input/output streams.
|
| com.hazelcast.query |
Contains interfaces/classes related to Hazelcast query and indexing support.
|
| com.hazelcast.util |
This package contains classes to support the inner workings of Hazelcast
as well as some backports of newer Java features / data structures to
support older Java versions in a clean and nice way.
|
| Class and Description |
|---|
| ConstructorFunction
See ConcurrencyUtil
|
| Class and Description |
|---|
| IterationType
To differentiate users selection on result collection on map-wide operations
like values , keySet , query etc.
|
| Class and Description |
|---|
| IterationType
To differentiate users selection on result collection on map-wide operations
like values , keySet , query etc.
|
| Class and Description |
|---|
| IterationType
To differentiate users selection on result collection on map-wide operations
like values , keySet , query etc.
|
| Class and Description |
|---|
| ConstructorFunction
See ConcurrencyUtil
|
| Class and Description |
|---|
| IterationType
To differentiate users selection on result collection on map-wide operations
like values , keySet , query etc.
|
| Class and Description |
|---|
| AddressUtil.AddressHolder
Holds address
|
| AddressUtil.AddressMatcher
http://docs.oracle.com/javase/1.5.0/docs/guide/net/ipv6_guide/index.html
|
| ConcurrentReferenceHashMap
An advanced hash table supporting configurable garbage collection semantics
of keys and values, optional referential-equality, full concurrency of
retrievals, and adjustable expected concurrency for updates.
|
| ConcurrentReferenceHashMap.Option |
| ConcurrentReferenceHashMap.ReferenceType
An option specifying which Java reference type should be used to refer
to a key and/or value.
|
| ConstructorFunction
See ConcurrencyUtil
|
| FutureUtil.ExceptionHandler
Internally used interface to define behavior of the FutureUtil methods when exceptions arise
|
| HealthMonitorLevel
Health monitor can be configured with system properties
"hazelcast.health.monitoring.level"
|
| IterationType
To differentiate users selection on result collection on map-wide operations
like values , keySet , query etc.
|
Copyright © 2014 Hazelcast, Inc.. All Rights Reserved.


Tell your non-tech friend a story about a time you got blocked on a simple problem and solved a problem in an elegant way?
At some point last week, I was blocked on an assignment as was not using the bracket notation to access an object property, whereas this was needed. I read the error messages, which provided the line of the error, and that the operations I was trying to do couldn't be done on Undefined. Although it wasn't when I started learning programming, debugging now just feels normal, code mostly doesn't work on the fist run attempt, but it's ok, that's how you learn.
I read about currying in the Eloquent Javascript chapter on higher order functions, I used the concept to refactor this week's assignments, creating 1 makeColor function instead of makeBlue, makeOrange, makeGreen. Less repetition is more elegant.
Reflect on how confident you feel using the problem solving techniques and process:
- Pseudocode: Pseudocoding feels useful when detailed enough that it provides good structure, but not as detailed as to make you feel like you're losing too much time.
- Trying something: Always and forever!
- Rubber ducky method: My current rubber duck is 1m86, has brown hair, hazelnut eyes and is called Nic. Looking at getting myself a real rubber ducky, a pink one that makes funky noises when you press on it. Kidding aside, it's a good technique for major blockers. It feels like explaining to someone/something else activates a different part of your brain, and I usually find the missing piece of the puzzle.
- Reading error messages: This is my first step when debugging, it helps figuring out the "stupid little mistakes", like typos or syntax errors.
- Console.logging: my most often used technique. It might be more useful for me to learn how to use debugger statements?
- Googling: This usually doesn't help me find out what the problem is, but rather how to solve it.
- Asking your peers for help: I'm sometimes very stubborn, I like to figure things out on my own. This being said, I feel like it will be quite different when we work on group projects, and we share the responsibility of the outcome. I feel like it will be easier to ask for help.
- Asking coaches for help: If I'm really not OK, believe me, you'll hear about me.
- Improving your process with reflection: I'm convinced reflecting on your learning is worth the time and effort.
Explain to your non-tech friend: Array.prototype.filter(), .map() and .reduce()
Because a picture is worth a thousand words...
var myFruitArray = [banana1, persimmon, banana2, banana3, kiwano, banana4]
var filteredFruits = myFruitArray.filter(isBanana)
var mappedFruits = filteredFruits.map(peel)
var smoothie = mappedFruits.reduce(grind, almondMilk)


First page Back Continue Last page Overview Graphics
Brief History
EcmaScript stuck at ES3 since 1999
Several attempts at feature “rich” ES4.
Successful ES3.1 simplification, renamed ES5
IE, FF implementations almost beta.
Progress at Opera,v8,…. Not yet Safari.
meld(ADsafe,Caja,…) → Secure EcmaScript
Four synergies between SES and ES5
ES-Harmony agreement on future directions
Lexical scoping, classes as sugar


A selectable table. Click on the rows to select them.
Selection:
Selectable:
Multiple
Single
Single or
Ctrl
-click for multiple
Disabled


|
|
def | __init__ |
| |
|
def | kind |
| |
|
def | set_kind |
| |
|
def | clear_kind |
| |
|
def | has_kind |
| |
|
def | id |
| |
|
def | set_id |
| |
|
def | clear_id |
| |
|
def | has_id |
| |
|
def | name |
| |
|
def | set_name |
| |
|
def | clear_name |
| |
|
def | has_name |
| |
|
def | MergeFrom |
| |
|
def | ParseASCII |
| |
|
def | ParseASCIIIgnoreUnknown |
| |
|
def | Equals |
| |
|
def | IsInitialized |
| |
|
def | ByteSize |
| |
|
def | ByteSizePartial |
| |
|
def | Clear |
| |
|
def | OutputUnchecked |
| |
|
def | OutputPartial |
| |
|
def | TryMerge |
| |
|
def | __str__ |
| |
|
|
| has_kind_ |
| |
|
| kind_ |
| |
|
| has_id_ |
| |
|
| id_ |
| |
|
| has_name_ |
| |
|
| name_ |
| |
|
|
int | has_kind_ = 0 |
| |
|
string | kind_ = "" |
| |
|
int | has_id_ = 0 |
| |
|
int | id_ = 0 |
| |
|
int | has_name_ = 0 |
| |
|
string | name_ = "" |
| |
|
int | kkind = 1 |
| |
|
int | kid = 2 |
| |
|
int | kname = 3 |
| |
The documentation for this class was generated from the following file:
- code/googleappengine-read-only/python/google/appengine/datastore/entity_v4_pb.py


Thiruvananthapuram District is the southernmost district in the Indian state of Kerala. The district was created in 1949, with its headquarters in the city of Thiruvananthapuram, which is also Kerala's capital. The present district was created in 1956 by separating the four southernmost Taluks of the erstwhile district to form Kanyakumari district. The district is home to more than 9% of total population of the state.[2] The district covers an area of 2,192 square kilometres (541,655 acres). At the 2011 census, it had a population of 3,301,427,[3] making it the second most populous district in Kerala after Malappuram district. [4] Its population density is the highest in Kerala, with 1,509 inhabitants per square kilometre (3,910/sq mi).[5] The district is divided into six subdistricts: Thiruvananthapuram, Chirayinkeezhu, Neyyattinkara, Nedumangadu, Varkala, and Kattakada. The urban bodies in the district are the Thiruvananthapuram Corporation, and the Varkala, Neyyattinkara, Attingal, and Nedumangad municipalities.[6] Thiruvananthapuram district is located between 8.17°N 76.41°E and 8.54°N 77.17°E. At the southernmost extremity of the district, Kaliyikkavila is 54 kilometres (34 mi) from Kanyakumari, the southernmost point on the Indian peninsula.[7] 33.75% of the population lives in urban areas.[8] The district has three major rivers, several freshwater lakes, and over 300 ponds. Its eastern region is forested, northern regions are mostly under rubber cultivation and the remaining areas grow mixed dry-land crops of coconut, plantain, and tapioca, among others. Built-up areas and rice fields complete the land use pattern.
Sree Padmanabhaswamy Temple
Napier Museum
Vellayani Lake
Shangumugham


GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address. More...
Functions | |
| template<typename T > | |
| T const * | value_ptr (detail::tvec2< T > const &vec) |
| Get the const address of the vector content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat4x3< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat4x3< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat3x4< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat3x4< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat4x2< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat4x2< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat2x4< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat2x4< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat3x2< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat3x2< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat2x3< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat2x3< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat4x4< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat4x4< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat3x3< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat3x3< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tmat2x2< T > &mat) |
| Get the address of the matrix content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tmat2x2< T > const &mat) |
| Get the const address of the matrix content. | |
| template<typename T > | |
| T * | value_ptr (detail::tvec4< T > &vec) |
| Get the address of the vector content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tvec4< T > const &vec) |
| Get the const address of the vector content. | |
| template<typename T > | |
| T * | value_ptr (detail::tvec3< T > &vec) |
| Get the address of the vector content. | |
| template<typename T > | |
| T const * | value_ptr (detail::tvec3< T > const &vec) |
| Get the const address of the vector content. | |
| template<typename T > | |
| T * | value_ptr (detail::tvec2< T > &vec) |
| Get the address of the vector content. |
GLM_GTC_type_ptr extension: Get access to vectors & matrices value type address.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tvec2< T > const & | vec ) |
Get the const address of the vector content.
From GLM_GTC_type_ptr extension.
Definition at line 33 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat4x3< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 285 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat4x3< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 275 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat3x4< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 264 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat3x4< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 253 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat4x2< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 242 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat4x2< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 231 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat2x4< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 220 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat2x4< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 209 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat3x2< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 198 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat3x2< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 187 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat2x3< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 176 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat2x3< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 165 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat4x4< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 154 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat4x4< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 143 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat3x3< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 132 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat3x3< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 121 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tmat2x2< T > & | mat ) |
Get the address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 110 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tmat2x2< T > const & | mat ) |
Get the const address of the matrix content.
From GLM_GTC_type_ptr extension.
Definition at line 99 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tvec4< T > & | vec ) |
Get the address of the vector content.
From GLM_GTC_type_ptr extension.
Definition at line 88 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tvec4< T > const & | vec ) |
Get the const address of the vector content.
From GLM_GTC_type_ptr extension.
Definition at line 77 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tvec3< T > & | vec ) |
Get the address of the vector content.
From GLM_GTC_type_ptr extension.
Definition at line 66 of file type_ptr.hpp.
| T const* glm::gtc::type_ptr::value_ptr | ( | detail::tvec3< T > const & | vec ) |
Get the const address of the vector content.
From GLM_GTC_type_ptr extension.
Definition at line 55 of file type_ptr.hpp.
| T* glm::gtc::type_ptr::value_ptr | ( | detail::tvec2< T > & | vec ) |
Get the address of the vector content.
From GLM_GTC_type_ptr extension.
Definition at line 44 of file type_ptr.hpp.


|
|
2012 Season FIRST Robotics Competition aka Rebound Rumble
Northeast Utilities FIRST Connecticut Regional
(64 teams found, 1 - 64 displayed)
|
Print | Close |
|
|
| Location |
Team Name |
Team Number |
Avon, CT USA |
UTC Fire and Security & Avon High School |
1124 |
Berlin, CT USA |
Pratt & Whitney East Hartford & C.M. McGee Middle School & Berlin High School |
155 |
Bridgeport, CT USA |
jcpenney & 4-H & warren Harding High School |
3634 |
Brookfield, CT USA |
PTC/United Technologies Corp (UTC)/CT FIRST/Goodrich/B & A Motorsports/jcpenney & Brookfield High School |
1099 |
Cheshire, CT USA |
Sikorsky Aircraft/Kiwanis Club of Cheshire & Cheshire High School |
999 |
Colchester, CT USA |
Dominion Nuclear Connecticut Inc. & Bacon Academy |
1699 |
East Hartford, CT USA |
United Technologies Research Center/Nerac, Inc./JP Fabrication & Repair/CNC Software & East Hartford High School & Connecticut River Academy & Rockville High School & Tolland High School & Connecticut International Baccalaureate Academy |
173 |
Enfield, CT USA |
UTC Hamilton Sundstrand Space Systems/PTC & Enrico Fermi High School |
175 |
Farmington, CT USA |
UTC Otis Elevator/ebm-papst Inc./UTC Sikorsky/Parker Hanifin Corp. Fluid Control Div. & Farmington High School |
178 |
Glastonbury, CT USA |
UTC & Glastonbury High School |
2170 |
Granby, CT USA |
Hamilton Sundstrand United Technologies Corporation / PTC / Westwood Products Inc. / The Connecticut Light and Power Company and Yankee Gas / Granby Education Foundation / Monster Accessories & Granby Memorial High School & Granby Memorial Middle School |
3146 |
Groton, CT USA |
Applied Physical Sciences/SAIC/Eastern Connecticut Workforce Investment Board/jcpenney/SolidWorks/Race Rock Associates/The Hillery Company/Groton Utilities -Thames Valley Communication & Fitch High School |
2168 |
Guilford, CT USA |
Bishop's Orchards / Pratt & Whitney / Rockwell Automation / Intuitive Surgical / Waldo & Associates LLC & 4H of Connecticut |
2067 |
Hartford, CT USA |
United Technologies/Pratt & Whitney/jcpenney & Hartford Public Schools |
181 |
Hartford, CT USA |
GE Volunteers/Integralis/Hartford Public Schools/University of Hartford & University High School of Science and Engineering |
1991 |
Kent, CT USA |
United Technologies Corporation/Parametric Technologies Corporation/Stanley Works & Kent School |
2785 |
Ledyard, CT USA |
Dominion Millstone Power Station & Ledyard High School |
1740 |
Litchfield, CT USA |
Protedyne/SSyD/Litchfield Education Foundation/Litchfield Lions/jcpenney & Litchfield High School & Wamogo High School |
1784 |
Meriden, CT USA |
Bristol-Myers Squibb/Verizon Foundation/Meriden Board Of Education/R&D Precision & Maloney High School & Platt High School & Wilcox Technical High School |
228 |
Middletown, CT USA |
UTC / Henkel / jcpenney / Bentley Sustaining Infrastructure / 4-H & Mercy High School |
3654 |
New Britain, CT USA |
jcpenney & E.C. Goodwin Technical High School & 4-H |
3718 |
New Haven, CT USA |
Yale University/United Illuminating/jcpenney/Covidien & H.R. Career H.S. |
558 |
New London , CT USA |
4H of New London County |
3719 |
Old Lyme, CT USA |
Dominion Millstone Power Station & Lyme-Old Lyme High School |
236 |
Shelton, CT USA |
UTC Sikorsky/OEM Controls/Pitney Bowes/Intuitive Surgical & Shelton High School |
230 |
Simsbury, CT USA |
jcpenney/United Technologies Corporation/Ensign Bickford & Simsbury High School & 4-H |
3464 |
South Windsor, CT USA |
UTC Power/Ensign Bickford Aerospace & Defense & South Windsor High School |
177 |
Southington, CT USA |
Pratt & Whitney / Pyramid Technologies / Tiger Enterprises / Saucier Mechanical Services Inc. / CL&P NU Transmission Group & Southington High School |
195 |
Stamford, CT USA |
Academy of Information Technology and Engineering High School |
3104 |
Storrs, CT USA |
jcpenney & Tolland County 4-H |
3555 |
Torrington, CT USA |
Best Buy & Litchfield County 4-H |
3461 |
Waterbury, CT USA |
UTC / jcpenney / 4H / NRWIB & John F. Kennedy High School |
3525 |
Watertown, CT USA |
Siemon Company/TUV Rheinland/Trumpf & Watertown High School |
237 |
West Hartford, CT USA |
United Technologies (UTC) / SWI Glass & Metal / Bethany Lutheran Church / P&W Military Aftermarket Services / P&W Women's Council / Aetna / CL&P / Connecticut Center for Advanced Technology (CCAT) / Connecticut Technology Council (CTC) / Pratt & Whitney & Athena's Warriors |
3182 |
Windsor, CT USA |
UTC Otis Elevator/Griffin Land & Windsor High School & Howell Cheney Technical High School & MLC High School |
571 |
Windsor Locks, CT USA |
UTC Hamilton Sundstrand & Windsor Locks High School & Suffield High School |
176 |
Winsted, CT USA |
Alcoa Foundation/jcpenney & Northwestern Regional High School |
4055 |
Wolcott, CT USA |
UTC Sikorsky Aircraft & Wolcott High School |
1071 |
Woodbury, CT USA |
ebm-papst Inc./United Technologies Corporation & Nonnewaug High School |
2836 |
Agawam, MA USA |
G & L Tool/PTC/Hamilton Sundstrand/Hartford Steam Boiler Inspection & Insurance Company/Berkshire Power/Agawam Lions club/Agawam Robotics Education Association Inc. & Agawam High School |
839 |
Clinton, MA USA |
Nypro Inc./PTC & Clinton High School |
126 |
Leominster, MA USA |
Raytheon/BOSE/Solidus Technical Solutions/Steel Fab inc & Leominster High School |
549 |
West Springfield, MA USA |
ITT Exelis / NAEA Energy Massachusetts, LLC / T C Sales & Lower Pioneer Valley Career and Technical Education Center |
1027 |
Whitinsville, MA USA |
Motorola Mobility Foundation & Whitinsville Christian School, High School |
663 |
Contoocook/Weare, NH USA |
MicroDaq.com Ltd/BAE Systems/jcpenney/Mellen Company/Sylvania & Hopkinton High School & John Stark High School |
1922 |
Hollis, NH USA |
BAE SYSTEMS/Technology Garden & Hollis Brookline High School |
1073 |
Lebanon, NH USA |
CRREL/HACTC IMW & Lebanon High School |
95 |
Windham, NH USA |
NASA/BAE Systems/jcpenney & Windham High School |
3467 |
Middlesex, NJ USA |
Middlesex High School |
869 |
Albany, NY USA |
RPI/National Grid/BAE Systems & Albany High School |
1493 |
Amsterdam, NY USA |
NASA / jcpenney / Rayco of Schenectady & Amsterdam High School-RPI |
4134 |
Bronx, NY USA |
jcpenney & High School of Computers and Technology |
743 |
Clifton Park, NY USA |
General Electric Volunteers/Global Foundries-Town of Malta Foundation/BAE SYSTEMS/TCT Federal Credit Union/Advanced Manufacturing Techniques Inc./Rensselaer Polytechnic Institute & Shenendehowa High School |
20 |
Colonie, NY USA |
GE Volunteers/The Foundation for Engineering Education/AFE Industries, Inc/jcpenney/RPI/Metal Supermarkets & Colonie Central High School |
250 |
Fresh Meadows, NY USA |
Pershing Square Foundation / Verizon / Swiss Reinsuarnce Company Ltd. / Port Authority of NY & NJ / Office of NYC Councilman Koo / Abraham Goldstein and Lillie Goldstein Foundation, Inc / Honeywell & Francis Lewis High School & FLHS Student Organization |
3017 |
Hudson, NY USA |
Kaz Inc / jcpenney / Platform Nation / RPI & 21st Century Afterschool Program & Hudson Teachers Association & Hudson City School District & Hudson High School |
1665 |
Latham, NY USA |
jcpenney/Sneeringer, Redgrave, Monohan, Provost Title Agency/PVA/Douglas Industrial/Anderson Power Products/O'Malley Law Firm & Shaker High School |
2791 |
New York, NY USA |
Ann and Donovan Moore/D. E. Shaw & Co./Stuyvesant High School Alumni Association/Credit Suisse/Time, Inc./The Wallace Foundation/Con Edison/Cox & Company, Inc/Yvette & Larry Gralla & Stuyvesant High School |
694 |
New York, NY USA |
NASA/Judy & Josh Weston/IEEE Foundation/Bloomberg/East Harlem Tutorial Program & East Harlem Tutorial Program |
1880 |
Ossining, NY USA |
IBM / NASA / jcpenney & Ossining High School |
4122 |
Penfield, NY USA |
Harris Corporation & Penfield High School |
1511 |
Potsdam, NY USA |
Clarkson University & Massena High School & Salmon River High School |
229 |
Victor, NY USA |
UltraLife/Xerox Corporation & Victor High School |
1559 |
League City, TX USA |
NASA-JSC/ & Clear Creek ISD |
118 |


Started as a college project. This WebApp project very raidly gained all my interest. I learnt a lot while working on this project about how to build an attractive User Interface and how to manage Database.
Click for complete project details.
Internship at the end of First Year turned out to be very useful and tiring. This was my first major project (WebApp) that streached me to my limits.
Click for complete project details.
Data Structures and Algorithm is one of my favourite subject. This was a DSA project that required a lot of research.
Click for complete project details.
Born In 1999. Raised in Surat.
I'm Harsh Jain, a multi-disciplinary developer from Surat, India. I am a Sophomore at Vellore Institute Of Technology persuing Computer Science Engineering.
Exloring various fields within my domain is something that excites me very much. I am currently studying Data Science apart from my academics. I love to dicuss new technology and innovations with other people and learning different people's perspective is always interesting. I have keen interest in competitive coding and take part in competitions whenever I get a chance.


Before there was something
And this is inbetween
And this goes on top
cherry
After that was nothing
After that was nothing
After that was nothing


open class BaseBottomDialogFragment : BottomSheetDialogFragment, ILife |
|
open class BaseDialogFragment : DialogFragment, ILife
Created by gaoyunfei on 2018/3/20. |
|
open class BaseFragment : Fragment, ILife
Created by gaoyunfei on 2018/1/28. |
|
abstract class DataBindingFragment<out B : ViewDataBinding> : BaseFragment
Created by gaoyunfei on 2018/2/6. |
|
abstract class PaginationFragment : RefreshListFragment
Created by gaoyunfei on 2018/1/29. |
|
abstract class RefreshListFragment : BaseFragment, OnRefreshListener
Created by gaoyunfei on 2018/1/28. |


Devil's Isle Survivor:
Devil's Isle... Oh, I am the sole survivor from that asful place... I don't know want to mislead you -- many adventurers still go to Devil's Isle and return.
But I am the only one to return from the worst spot on that accursed island: Lematan's Fleet.
Ask about Lematan's Fleet.


This is where Arnold met Daisaku Ikeda for the first time. Ikeda's trips abroad during the 1960s startled those around him to the realization that his vision for the dissemination of Nichiren Buddhism was not confined to Japan but was on a far grander scale than anyone imagined. His activities during the 1970s demonstrated that his vision of the role of Nichiren's Buddhism in society--its imperative for people's happiness--was not bound by a narrow sense of religiosity. More than simply a religious doctrine, for Ikeda, Nichiren's Buddhism was the philosophical basis for an active engagement with the global and societal challenges of the modern world.
This is where Arnold met Daisaku Ikeda for the second time. The encounter that is regarded in many ways as the gateway at the beginning of the broad path of dialogue that Ikeda has constructed is his dialogue with Arnold Toynbee. n September 1969, Ikeda received a letter from the 80-year-old British historian, inviting him to London for a discussion. Toynbee was famous for his epic study of world history analyzing the rise and fall of civilizations, and a well-known figure in Japan. In 1972 and 1973 Ikeda traveled to London and met with him. Their dialogue took place over a total of ten days, the two men examining and discussing various problems of contemporary society.
This is where Arnold met Daisaku Ikeda for the third time. At the end of their discussions, Toynbee gave Ikeda a list of prominent Western thinkers with whom he suggested Ikeda meet. Toynbee apparently had great expectations of Ikeda and remarked that he would likely receive more honorary doctorates within his lifetime than the historian had done. In fact, Ikeda received his first honorary doctorate shortly after that, from Moscow State University in May 1975. To date he has received over 300.
Arnold Joseph Toynbee CH (/ˈtɔɪnbi/; 14 April 1889 – 22 October 1975) was a British historian, philosopher of history, research professor of international history at the London School of Economics and the University of London and author of numerous books.
Toynbee in the 1918–1950 period was a leading specialist on international affairs.
Toynbee (born in London on 14 April 1889) was the son of Harry Valpy Toynbee (1861–1941), secretary of the Charity Organization Society, and his wife Sarah Edith Marshall (1859–1939); his sister Jocelyn Toynbee was an archaeologist and art historian.
Toynbee was perhaps the world’s most read, translated, and discussed living scholar.
While the writing of the Study was under way, Toynbee produced numerous smaller works and served as director of foreign research of the Royal Institute of International Affairs (1939–43) and director of the research department of the Foreign Office (1943–46); he also retained his position at the London School of Economics until his retirement in 1956.[7]
In 1972, Toynbee met with Daisaku Ikeda, president of Soka Gakkai International (SGI), who condemned the "demonic nature" of the use of nuclear weapons under any circumstances.
The Toynbee Prize is an honorary award, recognizing social scientists for significant academic and public contributions to humanity.
"The supreme accomplishment is to blur the line between work and play."
- Arnold J. Toynbee
To know more about this great man, visit his Wikipedia page.


Configuration Options
Home | Getting Started | API | Elements | Actions | Validators | Handlers | Configuration Options | Advanced Guides | Troubleshooting | About
Table of Contents
1 Configuration Overview
Nitrogen configuration is done in a handful of different configuration files,
and also varies slightly between backend servers. All of these files are found
in the etc/
directory of your Nitrogen installation. Below we will go though
the configuration options provided within each.
2 Univeral Configuration Files (configs available in all Nitrogen intallations)
etc/vm.args
This is the file that sends sends options to the Erlang Virtual Machine.
Basically, any of the usual
erl startup parameters will work
here. You'll define some standard options here, such as the node name,
(-name
), erlang cookie (-cookie
), some miscellaneous environment options,
and of course, to tell the system to launch the Nitrogen application upon
startup.
Here is the complete text of the default vm.args:
## Name of the Nitrogen node
-name<EMAIL_ADDRESS>## Cookie for distributed erlang
-setcookie nitrogen
## Heartbeat management; auto-restarts VM if it dies or becomes unresponsive
## (Disabled by default..use with caution!)
##-heart
## Enable kernel poll and a few async threads
+K true
+A 5
## Increase number of concurrent ports/sockets
-env ERL_MAX_PORTS 4096
## Tweak GC to run more often
-env ERL_FULLSWEEP_AFTER 10
## Include .beam files for site.
-pa ./site/ebin
## Include libraries and rebar dependency paths
-env ERL_LIBS ./lib
## Run code at startup.
-eval "application:start(nitrogen)"
etc/app.config
This file contains the configuration options for the Nitrogen application
itself. It uses the standard Erlang config syntax: (a proplist of
{applicationName, AppOptions}
).
For the nitrogen
application, the following AppOptions
are recognized:
signkey
- (String)signkey
is the term that Nitrogen usees to "sign" the state information that's sent to the client, and then resent back to the server with requests. While Nitrogen's state info is not encrypted, this is used to help verify that the term generated is actually generated by Nitrogen, to prevent client-side tampering with the state.session_timeout
- (integer)session_timeout
is the number of minutes a session can be idle before Nitrogen expunges it from memorycookie_name
- (string)cookie_name
is the name of the HTTP Cookie to be used as the sesson tracking cookie. This is not to be confused with the Erlang Cookie, which is defined in the vm.args file above.Also typically defined in the app.config file here is the SASL Configuration, the default of which for Nitrogen can be seen here:
module_prefix
- (string)- This provides the user with the ability to
route all Nitrogen web requests to modules that all share the same prefix. For
example, if
module_prefix
was set to "abc", then a request for /mypage would be directed to the module "abc_mypage". module_aliases
- (proplist)- This provides the template system with a default list of module aliases to use within Nitrogen templates. (See the Template Element for more details).
{sasl, [ {sasl_error_logger, {file, "log/sasl-error.log"}}, {errlog_type, error}, {error_logger_mf_dir, "log/sasl"}, % Log directory {error_logger_mf_maxbytes, 10485760}, % 10 MB max file size {error_logger_mf_maxfiles, 5} % 5 files max ]}
plugins.config
The Nitrogen plugin system is capable of automatically including plugin header files, along with importing static web resources (javascript files, images, etc). This can be done, and can be configured to work with just about any Nitrogen configuration, including non-standard configurations, such as manually importing Nitrogen as a dependency.
The plugins.config file contains information for how Nitrogen will import plugins.
It's a standard Erlang config file that takes three arguments.
plugins_hrl
- (path string)- Tell the Nitrogen plugin importer where to put the generated plugins.hrl file for the purposes of including plugin elements into your application. (default: ="./site/include/plugins.hrl"=)
static_dir
- (path string)- Tell the plugin system where you wish to put your plugins' static resources. (default: ="./site/static/plugins"=)
copy_mode
- (copy|link)- Tell the plugins system how to include any
static resources.
copy
will copy the entire contents of your plugins' static directories, whilelink
will merely create a symlink. If you work primarily with Linux or OSX, you can probably get away with usinglink
, while if you use Windows, you should stick withcopy
. (default:copy
).
Here's the complete text of the default plugins.config:
%% vim: ts=2 sw=2 et ft=erlang %% Nitrogen Plugin Installer Configuration %% %% This will tell the plugin-installer script where to put Nitrogen plugin %% information it finds. %% %% plugins_hrl tells the Nitrogen plugin installer where to put the .hrl file %% containing links to all your plugins' respective header files. %% The default is "./site/include/plugins.hrl". {plugins_hrl, "./site/include/plugins.hrl"}. %% static_dir tells the Nitrogen plugin installer where to copy your plugins' %% static resources (images, js, etc). %% The default is "./site/static/plugins" {static_dir, "./site/static/plugins"}. %% copy_mode determines if static resources are copied or merely symlinked. %% Keep in mind, symlinks do not work on Windows, so "copy" is the default. %% Valid values are the atoms 'copy' or 'link' %% Default: copy {copy_mode, copy}.
More about Plugins
The plugin system has its own complete documentation along with a sample plugin stub for creating your own plugins.
We strongly advise reading the Plugin Documentation.
Notable mention: rebar.config
The standard for Erlang distribution and building is the use of Basho's rebar. Nitrogen takes advantage of this for simplifying the process of making releases and compiling Nitrogen even after a release is built and deployed.
Generally, the main reason one would want to customize their installation is by
adding additional dependency packages. For example, if you wanted to include
the erlware_commons package for
improved date parsing and formatting, or the
erls3 package to give your app an
interface to Amazon S3, you would typically do it by adding the dependencies to
rebar.config then running make
in your Nitrogen installation.
By default, the only dependencies are the core dependencies for Nitrogen: nitrogen_core, nprocreg, sync, simple_bridge, and a webserver (Yaws, Cowboy, etc).
Also contained within the rebar.config are a handful of other compilation options: minimum Erlang version, where dependencies go, and debugging options.
Below is the rebar.config file when used with webmachine:
{sub_dirs, [ "site", "deps" ]}. {require_otp_vsn, "R13B04|R14|R15"}. {cover_enabled, true}. {erl_opts, [debug_info, fail_on_warning]}. {deps_dir, ["lib"]}. {deps, [ {webmachine, "1.8.*", {git, "git://github.com/basho/webmachine.git", {tag, "webmachine-1.8.1"}}}, {nitrogen_core, "2.1.*", {git, "git://github.com/nitrogen/nitrogen_core", "HEAD"}}, {nprocreg, "0.2.*", {git, "git://github.com/nitrogen/nprocreg", "HEAD"}}, {simple_bridge, "1.2.*", {git, "git://github.com/nitrogen/simple_bridge", "HEAD"}}, {sync, "0.1.*", {git, "git://github.com/rustyio/sync.git", "HEAD"}} ]}.
To add the above mentioned dependencies (erlware_commons
and erls3
), edit
the rebar.config file and modify the deps
list to look like this:
{deps, [ {webmachine, "1.8.*", {git, "git://github.com/basho/webmachine.git", {tag, "webmachine-1.8.1"}}}, %% Add our two new dependencies below {erls3, "1.9.*", {git, "git://github.com/shane42/erls3.git", "HEAD"}}, {erlware_commons, ".*", {git, "git://github.com/erlware/erlware_commons.git", "HEAD"}}, {nitrogen_core, "2.1.*", {git, "git://github.com/nitrogen/nitrogen_core", "HEAD"}}, {nprocreg, "0.2.*", {git, "git://github.com/nitrogen/nprocreg", "HEAD"}}, {simple_bridge, "1.2.*", {git, "git://github.com/nitrogen/simple_bridge", "HEAD"}}, {sync, "0.1.*", {git, "git://github.com/rustyio/sync.git", "HEAD"}} ]}.
Then run make
from the root of your Nitrogen installation. This will download
the new dependencies and install them into the lib
directory of your
installation.
3 Server-specific Configuration (in alphabetical order)
Common Configurations:
In most of the configurations below, you'll find some general running themes. Almost all of the servers take same basic set of core instructions to for initialization and address binding, as well as some way to notify Nitrogen and SimpleBridge where to find static files. These universal configuration settings are below:
bind_address
- (String)- The string of the IP address to bind. If set to "<IP_ADDRESS>" or left blank, it'll bind to all available addresses. (Default: ="<IP_ADDRESS>"= )
port
- (Number)- The port number to bind. (Default:
8000
)About Ports and Linux: While port 80 is the standard HTTP port,port 80 is a privileged port in a Linux/Unix environment. This means that in order for Erlang to bind to port 80, it will need to be run with root privileges. This is generally unadvised. Instead, we recommend using a lightweight reverse proxy (such as nginx) in front of Nitrogen. Doing so will allow you to run Nitrogen with standard user privileges (for better system security), while presenting your Nitrogen website on the expected port 80.
On some variants of Linux, it is possible to bind Nitrogen to port 80 without running as root. This is accomplished with the use of the
setcap
application (which may need to be installed from your distro's package system).An example of
setcap
being run on your Erlang app:sudo setcap cap_net_bind_service+ep ./erts-5.9.2/bin/beam sudo setcap cap_net_bind_service+ep ./erts-5.9.2/bin/beam.smp
This will give the
beam
andbeam.smp
programs privileges to bind to privileged ports (ports under 1024). server_name
- (Erlang term)- What to name the server. (Default:
nitrogen
) document_root
- (String)- The root of the location of static resources (ie, stylesheets, javascript
files, images, etc). This will be passed to simple_bridge for the serving of
static files. (Default: ="./site/static"= )
Note: this is relative to the root of the Nitrogen installation.
Cowboy: etc/cowboy.config
Cowboy is the web server made by Loïc Hoguin. The configuration for Cowboy provided with Nitrogen isn't the official configuration file, but it works for our purposes. The options we provide are read by Nitrogen and passed to the Cowboy server upon initialization.
The default Cowboy configuration is as follows:
[ {cowboy,[ {bind_address,"<IP_ADDRESS>"}, {port,8000}, {server_name,nitrogen}, {document_root,"./site/static"}, {static_paths, ["js/","images/","css/","nitrogen/"]} ]} ].
static_paths
- (List of Strings)This setting will be used to determine if a requested resource should be handled by Nitrogen and simple_bridge, or if it should just be immediately served directly by the Cowboy server. (Default:
["js/","images/","css/","nitrogen/"]
)Note 1: This is relative to the
document_root
above. So requests forjs/
will be served from./site/static/js/
(using the default above).Note 2: it is strongly recommended to catch static files with the
static_paths
setting. simple_bridge does not serve large static files in an optimal way (it loads the files into memory completely before sending).
Inets: etc/inets.config and etc/inets_httd.erlenv
Inets is the web client and server included with the standard Erlang Install, and we use the Inets Web server as the "simple" solution for Nitrogen. Inets isn't as feature-rich as the other popular Erlang webservers, and because of this, we only recommend using Inets for development purposes, since it doesn't require any additional installation.
Further, the Inets configuration is broken into two different files, one for
the inets
application itself, and one for the httpd server included in Inets.
etc/inets.config
This is the file for configuring the inets
application itself. By default, we
simply use this file to tell the application to start the httpd and load the
specified configuration file.
The default inets.config provided with Nitrogen is as follows:
[{inets, [
{services, [
{httpd, [
{proplist_file, "./etc/inets_httpd.erlenv"}
]}
]}
]}].
Note that basically all it does it tell inets
to load the inets_httpd.erlenv
proplist file, using the proplist_file
option.
etc/inets_httpd.erlenv
This file does the heavy lifting of configuring our inets configuration.
[ {port, 8000}, {bind_address, {0,0,0,0}}, {server_name, "nitrogen"}, {server_root, "."}, {document_root, "./site/static"}, {error_log, "./log/inets.log"}, {modules, [nitrogen_inets]}, {mime_types, [ {"css", "text/css"}, {"js", "text/javascript"}, {"html", "text/html"} ]} ].
bind_address
- (IP Address as a 4-tuple)- Note that the
bind_address
for Inets is different than for the rest of the servers in that it expects the address to be in the form of a 4-tuple for example, instead of specifying the string (ie ="<IP_ADDRESS>"=, you would specify{12,34,56,67}
). error_log
- (String)- The name of the file to store the inets logs.
modules
- (List of module names)- For each request, Erlang will attempt
to call
ModuleName:do/1
for each specified module. Typically, we just put in the atomnitrogen_inets
as that's the default Nitrogen entry point for inets. mime_types
- ([{Extension,Mimetype},…])- This is simply a list of the Mime Types you wish to support along with the extensions that trigger those mime types. By default, it supports css, javascript, and html files. More types will have to be added by the user.
Mochiweb: etc/mochiweb.config
Mochiweb is a webserver written by Bob Ippolito. It's a very lightweight webserver and very easy to configure.
The default configuration file for Mochiweb provided by Nitrogen is as follows:
[{mochiweb, [ {bind_address, "<IP_ADDRESS>"}, {port, 8000}, {server_name, nitrogen}, {document_root, "./site/static"}, %% Max Request size of 25MB. While this is a mochiweb env_var, %% it's actually only used in simple_bridge {max_request_size, 26214400} ]}].
max_request_size
- (Integer)- Tells Mochiweb (in particular, it tells SimpleBridge) what the maximum request size to be honored. This is in bytes. The current default is 25 MB maximum request size.
Webmachine: etc/webmachine.config
Webmachine is a web server written by Basho (the makers of Riak), and it provides functions to specify detailed dispatch rules.
The basic config file provided for Webmachine is very simple and minimal (it's basically the same as the one for cowboy)
[{webmachine, [ {bind_address, "<IP_ADDRESS>"}, {port, 8000}, {document_root, "./site/static"}, {server_name,nitrogen}, {static_paths, ["js/","images/","css/","nitrogen/"]} ]}].
static_paths
- (List of Strings)- Used to determine if a requested resource should be
handled by Nitrogen, or if it should just be immediately served directly by
Webmachine. (Default:
["js/","images/","css/","nitrogen/"]
)Note 1: This is relative to the
document_root
above. So requests forjs/
will be served from./site/static/js/
(using the default above).Note 2: it is strongly recommended to catch static files with the
static_paths
setting. simple_bridge does not serve large static files in an optimal way (it loads the files into memory completely before sending).
More Webmachine Dispatch Rules: site/src/nitrogen_sup.erl
Webmachine also provides a dispatch table to allow you to specify how requests
are handled (beyond the basics covered by Nitrogen and the configuration
above). If you're interested in diving into that, check out the
site/src/nitrogen_sup.erl
file in your Nitrogen installation.
Yaws: etc/yaws.config
Yaws is a high performance webserver created by Claes Wikstrom and is a unique addition to the Nitrogen's supported webserver line-up because it's one of the few that uses Apache-style configuration instead of the more usual Erlang proplist config files.
etc/yaws.config
This file is just tells Yaws where to load the actual configuration file, which you can probably deduce.
[{yaws, [
{conf, "./etc/yaws.conf"}
]}].
etc/yaws.conf
logdir = ./log <server mydomain.org> port = 8000 listen = <IP_ADDRESS> #the static code to be served directly by yaws is found in ./site/static docroot = ./site/static # tell yaws to pass control to the nitrogen_yaws module # (specifically nitrogen_yaws:out/1) for all requests except for any request # that starts with "images/", "nitrogen/", "css/", or "/js". # Bear in mind, however, the caveat to this performance improvement: # this means that you cannot have any pages called "nitrogen_xxx" or "css_yyy" because # the yaws config will see the "exclude_paths" rule below and completely ignore nitrogen. # Should you wish to have yaws handle any more static files, for example, if you added # a videos directory in site/static/, you can simply add "videos" to the end of the list # Ex: appmods = </, nitrogen_yaws exclude_paths images nitrogen css js videos> appmods = </, nitrogen_yaws exclude_paths images nitrogen css js> </server>
You can find the complete documentation for the yaws.conf file on the official website, but for the sake of convenience, here's the a brief description of the default one provided by Nitrogen.
logdir
- tells where to store the Yaws log files
<server mydomain.org> [...] </server>
- Defines a virtual server. For use
with Nitrogen, we recommend only specifying one.
mydomain.org
in our example is simply the name of the virtual server, and is not used for anything beyond a naming scheme. port
- The port to listen on.
listen
- Which IP address to listen on.
docroot
- The location of the static files relative to the Nitrogen installation
appmods = </, nitrogen_yaws exclude_paths images nitrogen css js>
- While
quite long and dense with information, this configuration setting tells Yaws to
send all requests to the Erlang module
nitrogen_yaws
, except for any requests that start with /images, /nitrogen, /css, or /js, which will instead be handled by Yaws directly.
4 Additional Configuration
Smart Extensions
nginx - A lightweight reverse proxy
Nginx is high performance, lightweight web server and reverse proxy that is commonly used for load balancing, rewrite rules, SSL certificates, and more.
Here's a sample configuration (this assumes a standard Ubuntu configuration):
/etc/nginx/nginx.conf
user www-data; worker_processes 1; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; events { worker_connections 4096; } http { include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 10; tcp_nodelay on; gzip on; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; }
Non-SSL Sample: /etc/nginx/sites-enabled/my_site
server { listen 80; server_name mysite.com www.mysite.com; access_log /var/log/nginx/mysite.com.access.log; location / { proxy_pass http://<IP_ADDRESS>:8000; } }
SSL-Only Sample: /etc/nginx/sites/enabled/my_secure_site
This configuration will server only SSL. It will redirect all requests from the HTTP port (port 80) to the HTTPS port (port 443) and load the certificates
# My config for a site that I only want serving SSL content. server { listen 80; server_name www.mysite.com, mysite.com; access_log /var/log/nginx/mysite.com.access.log; # rewrite all requests to be SSL rewrite ^(.*) https://$host$1 permanent; } server { listen 443; server_name mysite.com www.mysite.com access_log /var/log/nginx/mysite.ssl.access.log; ssl on; ssl_certificate ssl/mysite/mysite.com.crt; ssl_certificate_key ssl/mysite/mysite.com.key; ssl_client_certificate ssl/mysite/ca.crt; location / { # This installation is running on port 8021, as you can plainly see. proxy_pass http://<IP_ADDRESS>:8000; } }


My name is Susan Zheng. I am originally from China and now living in Los Angeles. I am a senior studying Business Administration, Graphic Design and Web Development at University of Southern California. I am passionate about doing graphic design because I value creativity a lot. My previous experience also includes E-commerce marketing, fashion marketing, event-planning and accounting. Depends on what my clients want, I create design work based on their requirements. I strive to create values for myself and people around me.


THE X-FILES (Fox - 1998) Starring David Duchovny, Gillian Anderson, Martin Landau, Armin Mueller-Stahl, Blythe Danner, William B. Davis, John Neville Screenplay by Chris Carter Produced by Chris Carter, Daniel Sackheim Directed by Rob Bowman Running time: 120 minutes
**1/2 (out of four stars) Alternate Rating: B-
Note: Some may consider portions of the following text to be spoilers. Be forewarned.
-------------------------------------------------------------
I feel obliged to begin by clarifying that I'm not exactly an ardent follower of THE X-FILES, the acclaimed Fox sci-fi television series which began its run five years ago as a bottom-dweller in the Neilsen ratings only to steadily gain momentum and evolve from a beloved cult fave into a outright mainstream phenomenon and bonafide international hit. I've watched about a dozen episodes of the TV show in full -- easily less than the typical rabid fan, but sufficient to be familiar with the histories and adventures of FBI agents Scully and Mulder. (Additionally, one of my current occupational hazards finds me privy to amusingly avid, earnest discussion and reverential dissection of the storylines for such TV series as THE X-FILES, STAR TREK: VOYAGER, and BABYLON 5 -- in short, I couldn't get away from the show if I tried.) In all fairness, Chris Carter's creation is probably one of the most imaginative of today's television shows, and has demonstrably struck a chord with the highly-coveted 15 - 24 demographic, making it an optimal candidate for translation to the big screen.
However, as a film THE X-FILES (the FIGHT THE FUTURE subtitle featured so prominently in its marketing campaign incidentally appears nowhere during the title credits) faces some unique challenges. As with all television series-turned-cinematic events, it's required to present sufficient backstory in order for newcomers to get up to speed while still remaining palatable to the faithful. The situation here, however, is even more of a precarious balancing act -- as a rare TV series to make the leap to the silver screen in the midst of its ongoing run, it's faced with the obstacle of unraveling its intricately-woven storyline to a point where a satisfying film conclusion can be achieved, yet is obligated to leave enough plot points unanswered in order to keep fans hooked for the upcoming television season.
As such, the film fares about as well as can be expected. Familiar regulars of the series such as The Lone Gunmen (Dean Haglund, Bruce Harwood and Tom Braidwood), The Cigarette-Smoking Man (William B. Davis), The Well-Manicured Man (John Neville), and assistant FBI director Walter Skinner (Mitch Pileggi) are trotted out for their obligatory appearances, while the film infuses prodigious veteran talents like Martin Landau, Armin Mueller-Stahl and Blythe Danner in newly-conceived roles.
Ultimately, however, the addition of new blood matters little, for THE X-FILES is most assuredly a vehicle for the continuing mythos of agents Dana Scully (Gillian Anderson) and Fox Mulder (David Duchovny) as they strive to uncover the truth behind the sinister government conspiracy to discredit evidence pertaining to the existence of extraterrestrial life here on Earth. Resuming where the '97-'98 TV season cliffhanger left off, the film finds our intrepid duo struggling against a powerful faction of master manipulators to overcome roadblocks thrown up from every direction as their own gravely somber interpersonal chemistry continues to evolve. (One rather disingenuous subplot falls victim to the awkward circumstances constraining the film -- while it's always a stretch to envision one of the protagonists surrendering the good fight, it's virtually impossible to swallow here given that the character threatening to quit is the same one we'll see on the tube in September when the series resumes.)
It's perhaps inappropriate to dismiss the film as simply a larger-scaled version of one of the TV episodes given the presence of strikingly atypical elements which are clearly aimed to broaden its mainstream appeal. Unlike its dour tube counterpart, THE X-FILES is notably more jokey, with Scully and Mulder trading the occasional tongue-in-cheek quip and droll one-liner. (The rooftop scene which introduces our heroes is particularly self-conscious, calculatingly playing riffs almost as if directly out of a buddy movie.) The sense of humour isn't particularly clever and not exactly welcome, although I did appreciate the light-hearted jab at Mr. Duchovny's legendary expressive qualities.
Where the film differs the most from the TV series is in its usage of extravagant set pieces, including the bombing of a Dallas federal office tower (in shades of the infamous 1995 Oklahoma City event), a cat-and-mouse helicopter chase through cornfields (an obvious homage to NORTH BY NORTHWEST), and even an action finale in the snowy reaches of Antarctica. These showy sequences, competently staged in the film, are virtually impossible to pull off under the budgetary and time constraints of a TV series but fit quite nicely within the scope of a summer event film. Whether or not they properly coalesce with a piece like THE X-FILES, however, is a matter of debate.
The show has always been at its best as an enigmatic, paranoiac meditative with a pervasive atmosphere of mistrust, and consequently it seems a bit off-kilter to witness the film as opened-up to such a degree. The small-scaled, low-key approach employed in the TV series is most effective in conveying its grim, creepy tone; it's no coincidence that the scenes in the film which remain most truthful to the spirit of the series -- the shady exchanges between Mulder and Dr. Kurtzweil in the darkened alleys -- are the most effective. With THE X-FILES, bigger is not necessarily better.
It's also a bit disconcerting to witness how gleefully THE X-FILES embraces the slam-bam mentality of the typical Hollywood action flick. The novelty of the television series is that it's a show propelled by ideas and imagination, and yet in the film we're reduced to watching Mulder heroically charging through the snow like a scrawnier, dapper Arnold Schwarzenegger clone to come to the rescue of imprisoned damsel-in-distress Scully, a perturbing step backward from the equal status the partners unquestionably share as TV characters. If joining the Hollywood brethren on the big screen implies that THE X-FILES is going to hereinafter *emulate* them at the cost of its foreboding signature style, perhaps it's best to stay on its home turf.
Bridging the fifth and sixth seasons of the TV series, the film version of THE X-FILES ultimately resolves very little of its outstanding mysteries, as it logically must. As the film concludes, in many ways we've traveled shockingly little from where we were as the opening credits rolled, and yet it's not a dissatisfactory watch, liberally sprinkling adventure, conflict, and verve into its mix of aliens, conspiracies, and overcoats. Given the involved nature of its storyline, it likely plays plays best to those who have invested much into its characters.
- Alex Fung email<EMAIL_ADDRESS>web : http://www.ncf.carleton.ca/~aw220/
-- Alex Fung<EMAIL_ADDRESS>| http://www.ncf.carleton.ca/~aw220/ "Only a twerp would castigate an audience for its enjoyment of something." - Pauline Kael
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


You cannot find anything new to watch?
You want listen something different from what you used to listen?
Do you want to explore new tastes?
Tell us how you feel!
We will recommend you 1 film, 1 song, 1 beverage each day according to your mood.
1 Film
1 Song
1 Bev


|
|
Recent Redux Help
|
Support
If you need support, experience any trouble with Recent Redux or would like to see additional features implemented, please consult the
Support Page on the Recent Redux website. You may also drop a line to the developer at support@timschroeder.net.


--- layout: post title: Notes on brand positioning statements who: delano ---
A comment from Alistair Croll today made me realize I didn't have a brand positioning statement for one of the projects I'm working on. While creating one, I put some notes together and thought I would post them in case they're helpful for someone. If you don't have a brand positioning statement or you want to understand them better, definitely take a look at the links below too!
A brand positioning statement describes the "mental space" a brand should occupy in the minds of a target audience. It serves as an internal document which guides most of a company's marketing communications strategies, programs and tactics. The brand positioning statement focuses on the elements and associations which meaningfully set a brand apart from the competition. It is typically constructed in the following format: "To (target market), Brand X is the brand of (frame of reference) that (point of difference) because (reasons).via Venture Republic
via Dan Wilson - Web Marketing Today
- Describe your customers (so you know what's important to them)
- Define yourself in terms of your competition (to help you explain your product)
- Explain your greatest benefit (the one thing that's most important to your most important customers)
- Put it together to create your Brand Positioning Statement
FOR ,via Dan Wilson - Web Marketing Today
OFFERS
THAT PROVIDES .
OURvia the Small Business Marketing Guide
IS THE ONLY
THAT .
FORvia the Small Business Marketing Guide
IS A
WHICH PROVIDES
UNLIKE
WHICH PROVIDES .
FOR THAT ,adapted from a comment by Thomas Ptacek
WE OFFER .
UNLIKE , PROVIDES THAT .


Workbench
For installation of Workbench, please see the
installation
section of the
wiki
. If you running into problems, post a message on the Workbench
discussion group
.


Notes for Machine Learning - Week 3
Contents
Logistic Regression
Classification and Representation
Classification
- Calssification Problem
- $y\in {0,1}$
- 0: “Negative Class”, 负类
- 1: “Positive Class”, 正类
- One method is to use linear regression and map all predictions greater than 0.5 as a 1 and all less than 0.5 as a 0. This method doesn’t work well because classification is not actually a linear function.
- Logistic Regression (逻辑回归) : $0\le h_\theta \le 1$
Hypothesis Representation
Logistic Regression Model
$h_\theta (x) = \frac{1}{1+e^{-\theta ^T x}}$
Want $0\le h_\theta(x)\le 1$
$h_\theta (x) = g(\theta ^T x)$
$g(z) = \frac{1}{1+e^{-z}}$
Called “Sigmod function” or “Logistic function”
Interpretation of Hypothesis Output
- $h_\theta (x)$ = estimated probability that $y=1$ on input $x$
- $h_\theta (x) = P(y=1|x; \theta)$
- probability that $y=1$, given $x$, parameterised by $\theta$.
- $P(y=0|x;\theta ) = 1 - P(y=1|x;\theta )$
Decision Boundary
In order to get our discrete 0 or 1 classification, we can suppose
- $h_\theta(x) \geq 0.5 \rightarrow y = 1$
- $h_\theta(x) < 0.5 \rightarrow y = 0$
The way our logistic function $g$ behaves is that when its input is greater than or equal to zero, its output is greater than or equal to 0.5:
- $g(z) \ge 0.5$ when $z\ge 0$, i.e., $\theta ^T x \ge 0$
In conclusion, we can now say:
- $\theta^T x \geq 0 \Rightarrow y = 1$
- $\theta^T x < 0 \Rightarrow y = 0$
Decision boundaries
The decision boundary is the line that separates the area where $y=0$ and where $y=1$. It is created by our hypothesis function $\theta^T x = 0$.
The decision boundary is a property, not of the trading set, but of the hypothesis $h_\theta(x)$ under the parameters. As long as we’re given parameter vector $\theta$, that defines the decision boundary. But the training set is not what we use to define the decision boundary.
Non-linear decision boundaries
The input to the sigmoid function $g(z)$ (e.g. $\theta ^T x$) doesn’t need to be linear, and could be a function that describes a circle (e.g. $z = \theta_0 + \theta _1 x_1 + \theta _2 x_2 + \theta _3 x_1^2 + \theta _4 x_2^2$) or any shape to fit our data.
Logistic Regression Model
Cost Function
We cannot use the same cost function that we use for linear regression because the Logistic Function will cause the output to be wavy, causing many local optima. In other words, it will not be a convex function (凸函数).
Instead, our cost function for logistic regression looks like:
- $\mathrm{Cost} = 0$ if $y=1, h_\theta (x)=1$
- But as $h_\theta (x) \to 0, \mathrm{Cost} \to \infty$
- Captures intuition that if $h_\theta (x) = 0$ (predict $P(y=1|x;\theta ) = 0$), but $y=1$, we’ll penalise learning algorithm by a very large cost.
Simplified Cost Function and Gradient Descent
Simplified Cost Function
We can compress our cost function’s two conditional cases into one case:
$\mathrm{Cost}(h_\theta(x),y) = - y \log(h_\theta(x)) - (1 - y) \log(1 - h_\theta(x))$
We can fully write out our entire cost function as follows:
$J(\theta) = - \frac{1}{m} \sum_{i=1}^m [y^{(i)}\log (h_\theta (x^{(i)})) + (1 - y^{(i)})\log (1 - h_\theta(x^{(i)}))]$
- This cost function can be derived from statistics using the principle of maximum likelihood estimation (极大似然估计). Which is an idea in statistics for how to efficiently find parameters’ data for different models.
- And it also has a nice property that it is convex.
A vectorized implementation is:
Gradient Descent
$Repeat \lbrace \\ \theta_j := \theta_j - \alpha \dfrac{\partial}{\partial \theta\_j}J(\theta)= \theta\_j - \frac{\alpha}{m} \sum\_{i=1}^m (h_\theta(x^{(i)}) - y^{(i)}) x_j^{(i)} \\\\ \rbrace$
Notice that this algorithm is identical to the one we used in linear regression (only $h_\theta (x)$ changes). We still have to simultaneously update all values in theta.
A vectorized implementation is:
- To make sure th learning rate $\alpha$ is set properly, you can plot $J(\theta)$ as a function of the number of iterations and make sure $J(\theta )$ is decreasing on every iteration.
Advanced Optimization
Optimization algorithms
- Gradient descent
- Conjugate gradient
- BFGS
- L-BFGS
The avdantage of last three algorithms:
- No need to manually pick $\alpha$
- Often faster than gradient descent
Disadvantages:
- More complex
Example
We first need to provide a function that evaluates the following two functions for a given input value $\theta$ :
- $J(\theta )$
- $\frac{\partial}{\partial \theta _j} J(\theta )$
We can write a single function that returns both of these:
|
|
Then we can use octave’s “fminunc()” optimization algorithm along with the “optimset()” function that creates an object containing the options we want to send to “fminunc()”.
|
|
Multiclass Classification: One-vs-all
Instead of $y = {0,1}$, we will expand our definition so that $y = {1,2…n}$. In this case we divide our problem into $n$ binary classification problems; in each one, we predict the probability that ‘y’ is a member of one of our classes.
That is, we can train a logistic regression classifier $h_\theta ^{(i)} (x)$ for each class $i$ to predict the probability that $y=i$.
On a new input $x$, to make a prediction, pick the class $i$ that maximizes $h_\theta ^{(i)} (x)$.
Regularization
Solving the Problem of Overfitting
The Problem of Overfitting
- High bias or underfitting is when the form of our hypothesis function h maps poorly to the trend of the data. It is usually caused by a function that is too simple or uses too few features. eg. if we take $h_\theta (x)=\theta _0+\theta _1x_1+\theta _2x_2$ then we are making an initial assumption that a linear model will fit the training data well and will be able to generalize but that may not be the case.
- At the other extreme, overfitting or high variance is caused by a hypothesis function that fits the available data but does not generalize (泛化) well to predict new data. It is usually caused by a complicated function that creates a lot of unnecessary curves and angles unrelated to the data.
This terminology is applied to both linear and logistic regression.
There are two main options to address the issue of overfitting:
- Reduce the number of features.
- Manually select which features to keep.
- Use a model selection algorithm (later in the course).
- Regularization (正则化)
- Keep all the features, but reduce the parameters $\theta _j$.
Regularization works well when we have a lot of slightly useful features.
Cost Function
Intuition
If we have overfitting from our hypothesis function, we can reduce the weight that some of the terms in our function carry by increasing their cost.
Say we wanted to make the following function more quadratic:
We’ll want to eliminate the influence of $\theta _3x_3$ and $\theta _4x_4$. Without actually getting rid of these features or changing the form of our hypothesis, we can instead modify our cost function:
We’ve added two extra terms at the end to inflate the cost of $\theta_3$ and $\theta_4$. Now, in order for the cost function to get close to zero, we will have to reduce the values of $\theta_3$ and $\theta_4$ to near zero. This will in turn greatly reduce the values of $\theta _3x_3$ and $\theta _4x_4$ in our hypothesis function.
Regularization
We could also regularize all of our theta parameters in a single summation:
The $\lambda$, or lambda, is the regularization parameter. It determines how much the costs of our theta parameters are inflated.
- Using the above cost function with the extra summation, we can smooth the output of our hypothesis function to reduce overfitting.
- If lambda is chosen to be too large, it may smooth out the function too much and cause underfitting. (fails to fit even the training set).

With some manipulation our update rule can also be represented as:
- The first term in the above equation, $1 - \alpha\frac{\lambda}{m}$ will always be less than 1. Intuitively you can see it as reducing the value of $\theta _j$ by some amount on every update.
- Notice that the second term is now exactly the same as it was before.
Normal Equation
To add in regularization, the equation is the same as our original, except that we add another term inside the parentheses:
$L$ should have dimension $(n+1)\times (n+1)$. Intuitively, this is the identity matrix (though we are not including $x_0$), multiplied with a single real number $\lambda$.
Recall that if $m\le n$, then $X^TX$ is non-invertible. However, when we add the term $\lambda \cdot L$, then $X^TX + \lambda \cdot L$ becomes invertible.
Regularized Logistic Regression
Cost Function
We can regularize this equation by adding a term to the end:
Note Well: The second sum, $\sum_{j=1}^n \theta_j^2$ means to explicitly exclude the bias term, $\theta _0$. I.e. the $\theta$ vector is indexed from 0 to n (holding $n+1$ values, $\theta _0$ through $\theta _n$), and this sum explicitly skips $\theta _0$, by running from 1 to n, skipping 0.


Down over the window come the dazzling, sunlit rays
Through the back alleys, through the blinds, another one of them endless days.
Honeybees are buzzing, leaves begin to stir,
I'm in love with my second cousin, I tell myself I could be happy forever with her.
I keep listening for footsteps, but I ain't ever hearing any,
From the boat I fish for bullheads, I catch a lot, sometimes too many.

Well, the old men 'round here, sometimes they get on bad terms with the younger men,
Old, young, age don't carry weight, it doesn't matter in the end.

There's a new grove of trees on the outskirts of town, the old one is long gone,
Timber, two foot six across, burns with the bark still on.
They say times are hard, if you don't believe it, you can just follow your nose.
It don't bother me, times are hard everywhere, we'll just have to see how it goes.
My old man, he's like some feudal lord, got more lives than a cat.
I never seen him quarrel with my mother even once, things come alive or they fall flat.
You can smell the pine-wood burning, you can hear the school-bell ring,
Gotta get up near the teacher if you can if you wanna learn anything.
Romeo, he said to Juliet, "You got a poor complexion. It doesn't give your appearance a very youthful touch."

They got – all got outta here any way they could, cold rain can give you the shivers.
They went down the Ohio, the Cumberland, the Tennessee, all the rest of them rebel rivers.
If you ever try to interfere with me or cross my path again, you do so at the peril of your life.
I'm not quite as cool or forgiving as I sound, I've seen 'nough heartache and strife.
My grandfather was a duck trapper, he could do it with just dragnets and ropes,
My grandmother could sew new dresses out of old cloth, I don't know if they had any dreams or hopes.
I had 'em once though, I suppose, to go along with all the ring-dancing Christmas carols on all the Christmas Eves,
I left all my dreams and hopes buried under tobacco leaves.
Not always easy kicking someone out, gotta wait awhile, it can be an unpleasant task.
Sometimes somebody wants you to give something up and, tears or not, it's too much to ask.


Value Semantics and the Memory Model
This chapter lays out the behaviour and semantics of values in Flax.
Value Types
There are 3 main types of values in Flax, one of which isn't really a value, just a wrapper type that encapsulates a certain kind of behaviour.
L-values
In terms of the IR, these are either globals, or stack-allocated variables. In other words, lvalues will always have a pointer (ie. memory location) associated with the actual value.
R-values
Again, in terms of the IR, these are normal values, with no memory location. rvalues can be assigned to lvalues, by virtue of storing the value into the memory location. In places where we need an lvalue, but only have an rvalue, an error will be thrown, I can think of several places in the compiler where we generate an lvalue from an rvalue by doing this:
. stackalloc (make lvalue)
. store rvalue into stackalloc
. use stackalloc (lvalue)
which needs to be eradicated.
FW-values
Name irrelevant; "function-wrapped values". Basically the getter/setter construct we see in some places, like subscript operators and computed properties. Fwvalues provide a getter function, and optionally a setter function. Like with any function, the getter function returns an rvalue, while the setter function takes rvalue arguments.
class Foo
{
var x: int
{
get { 10 }
set { printf("nice try\n"); }
}
}
In the case above, foo.x
is of fwvalue type.
Behaviour
Hopefully without reference types, these categories are easier to grok than the crazy value categories of C++. Below are a set of hopefully-comprehensive scenarios, and the kind of values that they generate.
var x
x
is an value. When a variable is referenced by name like this, it always generates an lvalue.
foo(...)
- The result of calling a function is always an rvalue.
x = foo[...]
, orx = foo.p
wherep
is a computed property- Subscripts and computed propertiees are special constructs; the result of such an operation is an fwvalue.
- Depending on whether the expression is used on the left or right, either the getter or setter is called.
- Obviously if no setter is available and the expression is on the left side, an error is thrown.
foo[...] = x
, orfoo.p = x
wherep
is a computed property- Similar to the point above.
x = foo(...)
- Function calls result in an rvalue.
x must be an lvalue for this statement to be valid.
Copy Operator
The copy operator can only be declared for class
types, not for struct
types.
Its definition takes this form:
class Foo
{
copy(other: Foo)
{
// initialise self
self.x = other.x
}
}
If no copy operator is provided, none will be provided for you by the state. If a copy opeartor is needed and it's not defined, the compiler will throw an error. It is as yet undetermined whether this is is a net increase or decrease in programmer burden.
Behaviour
Presented below are a set of hopefully-comprehensive scenarios in which the copy operator will be called.
foo = x
foo(x)
return x
- The copy operator is called on
foo
:foo.copy(x)
, essentially. The behaviour is identical for the 3 cases above.
- The copy operator is called on
foo(bar())
- Functions return an rvalue, and functions take rvalues as arguments. Hence, no copy operator is called in
this scenario, and the result of
bar()
is passed directly tofoo
.
- Functions return an rvalue, and functions take rvalues as arguments. Hence, no copy operator is called in
this scenario, and the result of
Move Operator
Like the copy operator, the move operator can only be defined on class
types.
The move operator takes this form:
class Foo
{
move(other: Foo)
{
// initialise self
self.resource = other.resource
other.resource = null
}
}
Note that while the copy and move operators take a similar form, they do fundamentally different things. The move operator is most useful when an object owns resources, like file descriptors or websockets, that cannot be *meaningfully* copied.
To forbid copying instances of a certain class, the declaration for the copy operator is simply omitted; the compiler will always attempt to use the move operator if possible, before resorting to the copy operator. Again, if the copy operator is not defined but is needed, an error is thrown. However, if the move operator is not defined, then the copy operator can be used to substitute for – the reverse is *not* true.
Like in C++, the move operator allows the transfer of 'ownership' from an rvalue to an lvalue, like in this case:
let x = openFileFromPathUsingMode("somefile.txt", "rw")
Since the function returns an rvalue, it is moved into the lvalue of x
. However, something like this:
let y = x
would attempt to call the copy operator, since x
is an lvalue, and y
is an lvalue that is being assigned to.
Since it would not make sense to define such an operator for a file object, its declaration would have been omitted, and the compiler will generate an error.
Calling the move operator is equivalent to this: x.move(result)
, where result
is the rvalue resulting from the function call.
In essence, the move operator enables the compiler to avoid creating temporary copies of objects that need to be constructed,
only to be destructed a few lines later.
Behaviour
Presented below are a set of hopefully-comprehensive scenarios in which the move operator will be called.
x = foo()
- Functions return rvalues. If the type of
x
defines a move operator, then it is called. If not, the copy operator is called. - This is equivalent to calling
x.move(foo())
- Functions return rvalues. If the type of
x = foo[i]
orx = foo.p
- Fwvalues cannot be moved from, even though they return rvalues.
- The class which the subscript or property belongs to typically 'owns' the resources being referred to. Hence,
given that the actual instance of the class (
foo
here) is not moved, then its contents cannot be moved away from it. - The scenarios above will result in calling the copy operator, if the type of
foo[i]
orfoo.p
is a class type. - If such an operator does not exist, an error is thrown as usual.
x = <expr of x>
- Given some random expression in
x
, for example an operator overload, the result of such an expression (that is not an fwvalue) will always be an rvalue. - The behaviour in this case is identical to calling a function:
x.move(x + 1)
, assuming+
is defined suitably.
- Given some random expression in
foo[i] = bar()
, orfoo.p = bar()
wherep
is a computed property- Similar to calling a function with the result of another function, since
bar()
results in an rvalue, the rvalue is passed directly to the setter of the fwvalue:foo.p.set(bar())
- Similar to calling a function with the result of another function, since
Reference Counting
Only class
types can be reference, since structs are supposed to be value types; they shouldn't be managing any
kind of memory or other "owned data".
However, there is technically no real reason why struct
types cannot be reference counted either...
Declaring a certain variable to be reference counted makes the variable have a wrapper type, represented like this:
struct rc
{
let ptr: T*
var refcount: i64
}
// ...
var foo: rc<Foo>
Note that the data pointer is immutable, for obvious reasons. When a new variable of type rc<T>
is created,
memory for T
is allocated on the heap, so the variable contains a pointer to a valid piece of memory.
In terms of behaviour, rc<T>
can be transparently
casted to both an rvalue T
, and an rvalue T*
that can be used to access the lvalue T
.
This means that operations like this:
class Foo
{
var x: int
init(a: int) { self.x = a }
}
operator + (a: Foo, b: int) -> Foo { return Foo(a.x + b) }
// ...
var x: rc<Foo> = Foo(10)
let y = x + 40
are valid, without having to explicitly deference or unwrap the rc
type. However, there is a caveat:
In the case of x + 40
, x
is implicitly unwrapped back to a Foo
lvalue in order to call
the +
operator. After the operation, however, we are left with an rvalue of type Foo
, that needs to be converted to a rc<Foo>
lvalue. Thus, if x + 40
is assigned to a value, eg.
let y = x + 40
(note that y
also has type rc<Foo>
),
x
essentially has to get moved to the lvalue y
.
In this context, the rvalue of the operation is moved into the pointer, like this: y.ptr.move(x + 40)
.
For an expression such as x += 40
, it is expanded to x = x + 40
, and hence x.ptr.move(unwrap(x) + 40)
. The reference count is unmodified after this operation. This is completely valid – the let
(immutability) of the pointer in rc
refers (in this case) only to the value of the pointer, not the object being pointed to.
In terms of value semantics, rc
types follow normal rules, in that x
is an lvalue, and
x + 40
is an rvalue.
To avoid subverting the reference counting system, reference counted lvalues cannot have their address taken, so
&x
is an invalid operation. Besides, since rc
is only a wrapper type, its address is
completely meaningless.
Finally, in declaring a variable var x: rc<T>
, the initial reference count of x
is defined to
be 1
.
Behaviour
Presented below are a set of hopefully-comprehensive scenarios which are relevant to reference counted types:
foo = rc
foo.x = rc
- The reference count of the original value of the variable being assigned to is decremented.
- The reference count of
rc
is incremented.
rc = foo()
- The reference count of the original value of
rc
is decremented. - The rvalue result of
foo()
is stored directly intorc
, ie. The data pointer and the reference count are copied directly. - With the behaviour detailed in (4), the new reference count of
rc
should be1 after the function call
- The reference count of the original value of
return rc
- The reference count of
rc
is incremented. - The lvalue of
rc
is turned into an rvalue and returned, as usual. At the scope exit, the compiler decrements the reference count ofrc
. - Since the refcount was artificially inflated by the return statement,
rc
is not deallocated, and the result returned by the function retains the data pointer ofrc
, and a reference count of1
.
- The reference count of
foo(rc)
- Functions taking
rc<T>
actually takerc<T>*
. This has several implications- Rvalue expressions cannot be passed to functions, eg.
foo(x + 4)
is invalid ifx
is a reference counted type. - The compiler needs to handle this inconvenience in codegen.
- Rvalue expressions cannot be passed to functions, eg.
- This behaviour ensures that the
rc
is not copied, allowing the original reference count to be updated. - The value being passed to the function is, for all intents and purposes,
rc
. If the callee prolongs the lifespan ofrc
(eg. by assigning it to some global), this should naturally prolong the lifespan of the originalrc
, and with this behaviour it will.
- Functions taking
String Reference Counting
Strings essentially behave in the same, reference-counted manner as rc
types.
The string contains a length, in bytes, of the buffer, as well as said buffer, which is a null-terminated series of bytes.
Built-in to the string representation is a 32-bit reference count – it's smaller than the default rc<T>
,
but this allows the string to fit into 16 bytes (on 64-bit platforms).
Strings are represented as such:
struct string
{
let buffer: int8*
let length: int32
var refcount: int32
}
Again, note that both the buffer and the length are immutable. Indeed, strings are immutable themselves. Operations that would
modify a string instead return new strings.
For example, in x += "foo"
, it is actually x = (x + "foo")
, and the difference is
that the string pointed to by x
is not modified; x
is given an entirely new string.
Operations creating strings like these, or any expression like "a" + "b"
, allocate memory for
the new string on the heap. String literals like "foo"
, on the other hand, are statically allocated as
expected. The reference count of such strings cannot be modified, so they are never dereferenced.
Differing from rc<T>
is that, in passing strings to functions, the a new string object is created with the
buffer being copied, which simplifies things on this end for now.