text:
forgetSQL is a Python module for accessing SQL databases by creating
Project description
|Stian Soiland <firstname.lastname@example.com>
|GNU Lesser General Public License (LGPL) See the file COPYING for details.
forgetSQL is a Python module for accessing SQL databases by creating classes that maps SQL tables to objects, normally one class pr. SQL table. The idea is to forget everything about SQL and just worrying about normal classes and objects.
- Installation
- What is forgetSQL?
- Usage
- forgetsql-generate
- Normal use
- Advanced use
- Specializing the forgetters
- Wrapping SQL queries
- Framework suggestion
Installation of the forgetSQL module is pretty straight forward:
python setup.py install
This will install forgetSQL.py into site-packages/ of your Python distribution.
- Python 2.2.1 (True/False, new style classes, classmethods, iterators)
- Some database module (tested: MySQLdb, psycopg)
If using psycopg, mx.DateTime is needed to avoid a psycopg bug related to re-inserting dates. psycopg depends on mx.DateTime, so that shouldn't be a problem.
What is forgetSQL?
Why forgetSQL?
Let's start by showing an example using an imaginary database mydatabase:
This example is based on these SQL tables:
|Stian Soiland
|Magnus Nordseth
|Sverre Stornes
|Erlend Mjaavatten
And should output something like:
Account details for Stian S�iland Group unix (15) Other members: Magnus Nordseth Erlend Mjaavatten
In regular SQL programming, this could be done something like this:
cursor = dbconn.cursor() cursor.execute("SELECT fullname,groupid FROM account WHERE accountid=%s", ('stain',)) fullname,groupid = cursor.fetchone() print "Account details for", fullname cursor.execute("SELECT name FROM group WHERE groupid=%s" % groupid) (groupname,) = cursor.fetchone() print "Group %s (%s)" % (groupid, name) cursor.execute("""SELECT fullname FROM account JOIN group USING (groupid) WHERE group.groupid=%s AND NOT account.accountid=%s""", (groupid, accountid)) print "Other members:" for (membername,) in cursor.fetchall(): print membername
Now, using forgetSQL:
from mydatabase import * account = Account("stain") # primary key print "Account details for", account.fullname group = account.group print "Group %s (%s)" % (group.name, group.groupid) print "Other members: " for member in group.getChildren(Account): # find Account with group as foreign key if member <> account: print member.fullname
Notice the difference in size and complexity of these two examples.
The first example is tightly bound against SQL. The programmer is forced to think about SQL instead of the real code. This programming style tends to move high-level details to SQL, even if it is not neccessary. In this example, when getting "other members", the detail of skipping the active user is done in SQL.
This would hardly save any CPU time on modern computers, but has made the code more complex. Thinking in SQL makes your program very large, as everything can be solved by some specialized SQL. Trying to change your program or database structure at a later time would be a nightmare.
Now, forgetSQL removes all those details for the every-day-SQL tasks. It will not be hyper-effective or give you points in the largest-join-ever-possible-contest, but it will help you focus on what you should be thinking of, making your program work.
If you at a later point (when everything runs without failures) discovers that you need to optimize something with a mega-query in SQL, you could just replace that code with regular SQL operations. Of course, if you've been using test-driven development (like in http://c2.com/cgi/wiki?ExtremeProgramming ) your tests will show if the replaced code works.
Another alternative could be to use views and stored procedure, and layer forgetSQL on top of those views and procedures. This has never been tested, though. =)
What does forgetSQL do?
For each table in your database, a class is created. Each instance created of these classes refer to a row in the given table. Each instance have attributes that refer to the fields in the database. Note that the instance is not created until you access that particular row.
So accessing a column of a row is simply accessing the attribute row.column. Now, if this column is a reference to another table, a foreign key, instead of an identifier you will in row.column find an instance from the other table, ie. from the other class.
This is what happens in the example above, group = account.group retrieves this instance. Further attribute access within this instance is resolved from the matching row in the group table.
If you want to change some value, you could just change the attribute value. In the example, if you want to change my name, simply run account.fullname = "Knut Carlsen" (my boss).
You can retrieve every row in some table that refers to the current object. This is what happens in group.getChildren(Account), which will return a list of those Accounts that have a foreign key refering to group.
If you retrieve the objects several times, the constructor will return the same object the second time (unless some timeout has expired). This means that changes done to the object is immediately visible to all instances. This is to reflect normal behaviour in object oriented programming.
>>> stain = Account("stain") >>> stain2 = Account("stain") >>> stain.fullname = "Knut Carlsen" >>> print stain2.fullname Knut Carlsen
What does forgetSQL not do?
forgetSQL is not a way to store objects in a database. It is a way to use databases as objects. You cannot store arbitrary objects in the database unless you use pickling.
forgetSQL does not help you with database design, although you might choose a development style that uses regular classes and objects at first, and then design the database afterwards. You could then change your classes to use forgetSQL for data retrieval and storage, and later possibly replace forgetSQL classes with even more advanced objects.
forgetSQL does not remove the need of heavy duty SQL. In some situations, SQL is simply the best solution. forgetSQL might involve many SQL operations for something that could be done in a single operations with a large magic query. If something does not scale up with forgetSQL, even if you refactored your code, you might try using SQL instead. This example would use excessive time in a table with a million rows:
for row in table.getAll(): row.backedUp = True row.save()
This would involve creating one million object instances (each row), one million SELECTs (to get the other values that needs to be saved), and one million UPDATEs. By using getAllIterator you could reduce this to just one million UPDATEs (one SELECT, reusing the same object), but still it would be far much slower than UPDATE table SET backedUp=true.
forgetSQL does not support commits/rollback. This might be implemented later, but I'm still unsure of how to actually use this in programming. Any suggestions are welcome.
Keeping in sync
forgetSQL does not ensure that objects in memory are in sync with what is stored in the database. The values in the object will be a snapshot of how the row were at the time you first tried to retrieve an attribute. If you change some value, and then save the object, the row is updated to your version, no matter what has happened in the database meanwhile. An object does not timeout while in memory, it does not refresh it's values unless you call _loadDB() manually, as automatically updating could confuse programmers. However, a timeout value is set, and if exceeded, new objects retrieved from database (ie. Account("stain") will be fresh.
It is not easy to make a general way to ensure objects are updated. For instance, always checking it could be heavy. It could also confuse some programs if an object suddenly changes some of it's attributes without telling, this could fuck up any updates the program is attempting to do. On the other hand, saving a changed object as forgetSQL is now, will overwrite all attributes, not just the changed ones.
Before you can use forgetSQL, you will need to generate a module containg the classes representing database tables. Luckily, forgetSQL ships with a program that can do this for you by guessing.
The program is called forgetsql-generate and should be installed by setup.py or the packaging system. You might need the devel-version of the forgetSQL package.
Create a file tables.txt, with a list of database tables, one per line. (This is needed since there is no consistent way to query a database about it's tables)
Then generate the module representing your tables:
forgetsql-generate --dbmodule psycopg --username=johndoe --password=Jens1PuLe --database=genious --tables tables.txt --output Genious.py
Alternative, you could pipe the table list to forgetsql-generate and avoid --tables – and likewise drop --output and capture stdout from forgetsql-generate.
The generated module is ready for use, except that you need should set database connecting details. One possible way is included in the generated code, commented out and without a password.
It is recommended to set connection details from the outside instead, since the tables might be used by different parts of a system using different database passwords, connection details could be in a configuration file, you need persistent database connections, etc.
The way to do this is to set Genious._Wrapper.cursor to a cursor method, and Genious._Wrapper._dbModule to the database module used:
import Genious import psycopg conn = psycopg.connect(user="blal", pass="sdlksdlk", database="blabla") Genious._Wrapper.cursor = conn.cursor() Genious._Wrapper._dbModule = psycopg
This should be refactored to a more userfriendly interface.
Normal use
We'll call a class that is a representation of a database table a forgetter, because it inherits forgetSQL.Forgetter. This chapter will present normal usage of such forgetters by examples.
Getting a row by giving primary key
account = Account("stain") print account.fullname
If the primary key is wrong (ie. the row does not exist) accessing account.fullname will raise forgetSQL.NotFound. The object is actually not loaded from the database until a attribute is read. (delayed loading) One problem with that is that forgetSQL.NotFound will not be raised until the attribute is read.
To test if the primary key is valid, force a load:
account = Account("stain") try: account.load() except forgetSQL.NotFound(): print "Cannot find stain" return
Getting all rows in a table
allAccounts = Account.getAll() for account in allAccounts: print account.accountid, account.fullname
Note that getAll is a class method, so it is available even before creating some Account. The returned list will be empty if nothing is found.
Also note that if what you want to do is to iterate, using getAllIterator() would work well. This avoids creating all objects at once.
To create a new row in a table
account = Account() account.accountid = "jennyme" # primary key account.fullname = "Jenny Marie Ellingsaeter" account.save()
If you have forgotten to set some required fields, save() will fail. If you don't set the primary key, forgetSQL will try to guess the sequence name (tablename_primarykey_seq) to retrieve a new one. This might or might not work. For MySQL some other magic is involved, but it should work.
Change some attribute
account = Account("stain") account.fullname = "Stian Stornes" # got married to a beautiful man
You can choose wether you want to call save() or not. If you don't call save(), the object will be saved when the object reference disappaers (ie. del account, end of function, etc.) and collected by the garbage collector. Note that this might be delayed, and that any errors will be disgarded.
If you are unsure if you have used the correct datatype or want to catch save-errors, use save():
group = Group(17) group.accountid = 'itil' # a string won't work in a integer field try: group.save() except Exception, e: print "Could not save group %s: %s" % (group, e)
The exception raised will be database module specific, like psycopg.ProgrammingError, possible containing some useful information.
save() will return True if successful.
Undoing an attribute change
If you changed an attribute, and you don't want to save the change to the database (as this will happen when the garbage collector kicks in), you have two choices:
reset the instance to a blank state:
This sets everything to None, including the primary key. If you have referenced the instance anywhere else, they will now experience a blank instance.
reload from database:
Note, load() will perform a new SELECT.
Note that you don't have to reset() if you haven't changed any attributes, the instance will only save if anything has changed.
Access foreign keys
account = Account("stain") print account.group.accountid print account.group.name
An attribute which is a foreign key to some other table will be identified by forgetsql-generate if it's name is something like other_table_id. If the generator could not identify foreign keys correctly, modify _userClasses in the generated Forgetter definition. (See Specializing the forgetters).
To access the real primary key, use account.group.accountid or account.group._getID(). Note that the latter will return a tupple (in case the primary key contained several columns).o
You can set a foreign key attribute to a new object from the foreign class:
import random allGroups = Group.getAll() for account in Account.getAll(): # Set the group to one of the Group instances # in allGroups account.group = random.choice(allGroups) del account # Note that by reusing the account variable all of these # will be saved by the garbage collector
or to just the foreign primary key:
account.group = 18
Note that this referencing magic makes JOIN unneccessary in many cases, but be aware that due to lazy loading (attributes are not loaded from database before they are accessed for the first time), in some cases this might result in many SELECT-calls. There are ways to avoid this, see Wrapping SQL queries.
Finding foreign keys
You might want to walk in reverse, finding all accounts that have a given group as a foreign key:
group = Group(15) members = group.getChildren(Account)
This is equivalent to SQL:
SELECT * FROM account WHERE groupid=15
Deleting an instance
Note that although rows are represented as instances, they will not be deleted from the database by dereferencing. Simply removing a name binding only removes the representation. (and actually forces a save() if anything has changed).
To remove a row from the database:
account = Account("stornes") account.delete()
delete() might fail if your database claims reference integrity but does not cascade delete:
group = Group(17) group.delete()
Advanced use
You may specify a where-sentence to be inserted into the SELECT-call of getAll-methods:
members = Account.getAll(where="groupid=17")
Note that you must take care of proper escaping on your own by using this approach. Most database modules have some form of escape functions.
In many cases, what you want to do with WHERE is probably the same as with getChildren():
group = Group(17) members = group.getChildren(Account)
This will be as effective as generating a WHERE-clasule, since group.load() won't be run (no attributes accessed, only the primary key).
The sentence is directly inserted, so you need to use the actual SQL column names, not the attribute names. You can use AND and OR as you like.
If you have several clauses to be AND-ed together, forgetSQL can do this for you, as the where-parameter can be a list:
where = [] where.append("groupid=17") if something: where.append("fullname like 'Stian%'") Account.getAll(where=where)
If you have specified _orderBy (see Specializing the forgetters), the results of getAll* and getChildren will be ordered by those attributes.
If you want to specify ordering manually, you can supply a keyword argument to getAll:
all = Account.getAll(orderBy="fullname")
The value of orderBy could be either a string (representing the object attribute to be sorted) or a tupple of strings (order by A, then B, etc.). Note that you can only order by attributes defined in the given table.
If you want some other fancy sorting, sort the list after retrieval using regular list.sort():
all = Account.getAll() all.sort(lambda a,b: cmp(a.split()[-1], b.split()[-1])) # order by last name! :=)
More getAll
There are specialized getAll methods for different situations.
If you just want the IDs in a table:
>>> all = Account.getAllIDs() ['stornes', 'stain', 'magnun', 'mjaavatt']
The regular getAll() actually runs getAllIDs(), and returns a list of instances based on those IDs. The real data is not loaded until attribute access. In some cases, this might be OK, for instance if you want to call getChildren and really don't care about the attribute values.
If you are going to iterate through the list, a common case, use instead:
for account in Account.getAllIterator(): print account.fullname
This will return an iterator, not a list, returning Account objects. For each iteration, a new instance is returned, with all fields loaded. Internally in the iterator, a buffer of results from SELECT * is contained.
In Python, object creation is a bit expensive, so you might reuse the same object for each iteration by creating it first and specifying it as the keyword argument useObject:
for account in Account.getAllIterator(useObject=Account()): print account.fullname
Note that changes made to account in this case will be flushed unless you manually call save(). Do not pass this instance on, as it's content will change for each iteration.
Finally, getAllText() will use _shortView (See Specializing the forgetters) and return tupples of (id, text). This is useful for a dropdown-list of selectors.
Specializing the forgetters
Sorry, this section is currently unfinished.
Wrapping SQL queries
Sorry, this section is currently unfinished.
Framework suggestion
Sorry, this section is currently unfinished.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, size
|File type
|Python version
|Upload date
|Filename, size forgetSQL-0.5.1.tar.gz (29.5 kB)
|File type Source
|Python version None
|Upload date
|Hashes View


text:
Forward to 3 May 2009 moth page, back to 13 April 2009 moth page, to general moths page.
Despite the warmth of the weekend and the springiness of the blossoms there was little in the trap this morning, maybe because of the cool, cloudless night. Just two Hebrew Characters and a Shuttle-shaped Dart (previously photographed here).
Back to Meades Family Homepage

subset: commoncrawl


text:
We already have discussed different types of Hosting services available and their benefits and how and why they are preferred. One of among them is Dedicated Server Hosting Services. Most of us prefers this very hosting services for their businesses and enterprises in order to store data. No wonder, there are many benefits of choosing this hosting service and most common of them is control. In virtual private server or shared hosting server there are multiple accounts and thus it monitored by hosting service provider in order to maintain its security and performance but in case of dedicated servers it's full responsibility of yours to maintain security.
Source : http://webhosting.about.com/od/Dedicated-Hosting/a/4-Security-Threats-Dedicated-Server.htm
User need to protect the server and data from all kinds of online security threats. Thus, it become very important to know the big security threats to dedicated server hosting services.
Big Security Threats To Dedicated Server Hosting Services
Password Violation:- Nowadays, criminals and hackers are very smart as well as they are getting more sophisticated as day is passing. Now, they uses advanced technological tools using which they access your data and put all efforts in destroying your data. However, there are many hackers, who still make use of the oldest effective hacking tool that is hacking your password forcibly.
Most dedicated server users don't implement robust policy for passwords and thats why the hackers taking help of few hacking scripts they easily sneak into your server accounts. Moreover, once password breach is detected, it's really become very crucial to reset all the passwords.
Denial of Service(DoS):- Denial of Service(DoS) attacks is biggest threat to the website and according to reports it becoming popular tremendously. If one going with dedicated servers, it quite possible that the website to be hosted is witnessing a consistent growth in online reputation. A website having great reputation is prime target of DoS attacks which causes unavailability and server failure by directing an enormous stream of traffic to the very system. DDoS or called distributed denial of service has many malicious systems work sync to deluge your server with extremely high traffic. This responsible for bad experience to your legitimate and regular customers as well as it's also waste of hardware resources.
Horrible Malware:- Dedicated server users can easily install applications and thus the server are highly prone to different kind of malware. Actually, malware is nothing but a horrible/bad software program that is coded in order to disrupt the server data and to steal stuff. Malware categories may varies like ransomware, Trojan, worms but they all have one mission to collect confidential data from database. Usually they sneaks secretly bundled along with application you installed on to server. So, it always recommended to scan all the files that you have downloaded before installing them.
Puede a veces sucede que el virus infecta su cuenta de alojamiento cuando el PC está infectado. Es difícil de eliminar el virus de pasar por paso manual especialmente cuando se trata de Troya. No importa, la forma en que se mete en su computadora, pero no tiene que preocuparse como el uso de la mejor herramienta de eliminación devirus se puede eliminar fácilmente.
Sneaky Redirects:- There are also some nasty malware that are responsible to redirect your website visitor to some other infectious websites. This usually done to collect net banking passwords, credits cards details.
These are some big security threats to dedicated server hosting services. So, you all come to know. It always be better to take preventive steps as Prevention Is Better Than Cure!!!
Reference : https://www.jaguarpc.com/blog/the-three-biggest-security-threats-to-your-dedicated-server-hosting-service/


text:
|" O' Grady "
Being from Ireland himself O'Grady would like to wish all his friends Irish and otherwise a very "Happy St. Patrick's Day."
He'd also like to share some of his favorite Irish sayings with you:
"May flowers always line your path and sunshine light your day. May songbirds serenade you every step along the way. May a rainbow run beside you in a sky that's always blue. And may happiness fill your heart each day your whole life through."
"May you have the hindsight to know where you've been, The foresight to know where you are going, And the insight to know when you have gone too far"
"May your thoughts be as glad as the shamrocks, may your heart be as light as a song, may each day bring you bright, happy hours that stay with you all the year long."


text:
Vodafone Hutchison Australia (VHA) and TPG intend to launch legal action in the Federal Court following the Australian Competition and Consumer Commission's decision to oppose the proposed merger of the telcos.
VHA CEO Iñaki Berroeta said the company remains firmly committed to the merger.
"VHA respects the ACCC process, but we believe the merger with TPG will bring very real benefits to consumers. We have therefore decided that VHA should, together with TPG, pursue approval of the merger through the Federal Court," said Berroeta.
He said the proposed merger is about combining two complementary businesses, which have very little overlap and can deliver more for Australian consumers together than they can alone.
"VHA is an established mobile business with less than one per cent of the fixed broadband market, while TPG is the second largest fixed broadband player with no mobile network," said Mr Berroeta.
"Australia's mobile market has delivered some of the best outcomes for consumers of any country in the OECD. The merger provides a unique opportunity for VHA and TPG to combine their complementary assets. The merger would create an entity that can compete more aggressively in this highly competitive market than either VHA or TPG could on their own. It is disappointing that the ACCC does not see it this way.
"While we continue to pursue the merger through the court, it remains business as usual for VHA. We will continue to challenge the market by delivering the best value products and services we can to our customers."
The merger agreement with TPG has also been extended to 31 August 2020 to allow sufficient time for the Federal Court to deliver its decision and for the merger process to be completed.


text:
This site is entirely user-supported. See how you can help.
We don't have any photos of this building yet. Why don't you be the first to send us one?
Latitude: 52.751 / 52°45'3"N
Longitude: -1.1468 / 1°8'48"W
OS Eastings: 457685
OS Northings: 317388
OS Grid: SK576173
Mapcode National: GBR 8L2.JW1
Mapcode Global: WHDHY.C34T
Plus Code: 9C4WQV23+C7
Entry Name: Number 47 with Garden Wall and Attached Gazedo to Rear
Listing Date: 30 March 1979
Last Amended: 20 July 1990
Grade: II
Source: Historic England
Source ID: 1074584
English Heritage Legacy ID: 189262
Location: Barrow upon Soar, Charnwood, Leicestershire, LE12
County: Leicestershire
District: Charnwood
Civil Parish: Barrow upon Soar
Built-Up Area: Barrow upon Soar
Traditional County: Leicestershire
Lieutenancy Area (Ceremonial County): Leicestershire
Church of England Parish: Barrow-upon-Soar Holy Trinity
Church of England Diocese: Leicester
Inthe entry for BARROW UPON SOAR BEVERIDGE STREET
3/6 No. 47
The address shall be amended to read: BEVERIDGE STREET
No. 47 with garden
wall and attached
gazebo to rear
The following shall be added to the end of the description:
'Garden wall, brick in English garden wall bond, with gazebo attached.
The latter, probably c1700, with brick front wall, pedimented with
concrete coping, large segmental arch; rear wall of Suithland rubble.'
3/6 No. 47
House in 2 distinct sections, late C17 extended and modified later. Rear
gable of wing dated 1691 in burnt headers. Flemish bond brickwork
throughout but with vitrified headers to southern section, and all on a
rubble plinth. Northern section is later and of 2 storeys and 2 units,
with swithland slate roof and central stack. Windows are replacements
of c1840: sashes with margin lights, projecting from wall face. Brick
heads (to former openings?) visible, one curved,one flat. Brick sill
course and dentilled eaves cornice. South range is late C17 or early C18,
also of 2 storeys and 2 bays with doorway to left, an elegant fluted
doorcase with overlight, in a derived classical style, windows are
projecting sashes with margin lights. Moulded brick eaves cornice, tiled
roof and ridge stack behind door.
C17 house contains remnants of earlier timber framed structure, including
portion of an upper cruck; C18 panelled doors etc.
Listing NGR: SK5768517388
This text is from the original listing, and may not necessarily reflect the current setting of the building.
Other nearby listed buildings


text:
Later this month, we'll be releasing Mozilla Thimble. Thimble is a simple web page editor combined with a series of 'projects' that help you learn the basics of HTML and CSS. The idea is to get people to learn basic web coding by just diving in and making something. Thimble projects make that easier by giving people guidance and a head start.
Thimble will go live just in time for our Summer Code Party campaign that kicks off on June 23. We want people using Thimble at their 'kitchen table' events, so I thought I should give people a preview of what's coming.
The first thing you'll see is a gallery of Thimble projects. The initial projects are designed to grab the interest of 8 – 14 year olds and to invite them to start making. We'll be rolling out projects for older teens and adults later in the year.
As a part of this 'interest grabbing' approach, a number of the projects have been developed by organizations that already work with young people. This one is from the London Zoo. It teaches basic HTML and a bit about endangered species at the same time.
The Thimble interface itself is a simple side-by-side web page editor based on Code Mirror. The left pane is the code, and the right pane is the page preview rendered in real time.
The project pages are a mix of instructional comments and actual page elements. In the London Zoo Awesome Animal Builder project, the aim is to create your own species by combining image files from real endangered species that the Zoo wants you to learn about.
Here I was able to change the background of my species picture by changing the CSS class. As the code comments explain, I can choose between 'ocean, rainforest or desert.'
If you're new to HTML and CSS (that's who this is aimed at), we've put in a bunch of features designed to help you if you get stuck with tasks like this. For example, you can click on any tag to get info on what it does.
Also, we've included pop-up hints that help you figure out what the right syntax is for a particular element.
After changing my CSS class (above), I then started moving different PNG files from different species into the frame with the question marks at the top of the page. These files are all given to me lower in the page along side info about the real endangered species. All I have to do is cut and paste the image URLs in order to build my animal.
And, voila! After moving a few more image URLS I now have a completed animal. I've also learned a) how headline tags work in HTML, b) the idea that CSS can be used to change the look of a major element of a page and c) that images in a web page are just references to a file somewhere on a server.
These may sound like small things to learn — but it's exactly these small things we want people to start with. There are other projects in the gallery that deal with more advanced HTML and CSS topics. And, in a later release, anyone will be able to submit a project page to teach whatever aspect of web development tickles their fancy. Our hope is that Thimble can become a 'Wikipedia of webmaking lessons', which would be an awesome resource for the world to have.
Of course, our Mozilla Webmaker ambitions are much bigger than just teaching HTML and CSS. PopcornMaker will be a major resource for helping people make and learn about interactive video on the web. And, later this year, we'll start experimenting with ways to teach people Javascript, most likely through game modding and making.
Early next week, we'll release a preview version of Mozilla Thimble to people who are organizing Summer Code Party events. Most of these events are small and short — just you at your kitchen table or in your living room teaching two or three people a bit about how to code for the web. If you want to organize an event like this (and see the Thimble preview), sign up here on the Mozilla Webmaker events site.
Mozilla Thimble preview
Later this month, we'll be releasing Mozilla Thimble. Thimble is a simple web page editor combined with a series of 'projects' that help you learn the basics of HTML and CSS. The idea is to get people to learn basic web coding by just diving in and making something. Thimble projects make that easier by giving people guidance and a head start.


text:
To continue our amazing Japan trip today I will tell you about the journey we took from Tokyo to the South- West between Lake Ashi and Hakone!
The Lake Ashi area is very well known, especially for its beautiful view over Mount Fuji, while the small town of Hakone is famous for its thermal baths, the so called "Onsen".
Me and my beardy boy visited the area during the day, to refresh our batteries we enjoyed a hot bath in the magnificent hakone yuryo in the evening and we started again the next morning! Ideally it would take a couple of days to visit at best the 5 Lakes area surrounding Mount Fuji, but given the period and the clouds, which unfortunately did not allow to see the mountain, we opted for a single night at Hakone.
Lake Ashi is a truly wonderful natural oasis. From the small port on the lake, boat tours depart every hour at the price of 18 € for the Galleon or 15 € for the classic boat.
The park bordering the lake is full of wonderful views. From here you can photograph the Mount Fuji, the natural surroundings, the beautiful torii and colorful lanterns that line up along the shore of the lake and the majestic floating torii. Even if you do not love photography the walk is really refreshing!
Late in the afternoon move to Hakone and head towards the spa complex hakone yuryo where you will find the beauty of 19 private onsen (divided into 3 types by size and price range) and 2 public onsen (one male only and one female only). The termal area is one of the most evocative of the city and I assure you that it will be an unforgettable mystical experience!
For dinner, I recommend one of the many family-run cafes in the main street (there is only 1 street, so you can not go wrong!). Me and beardy boy opted for a set menu with fried chicken and Japanese vegetables, served by a couple of really wonderful local elderly gentlemen who kept the kitchen open until 21.00 only for us 🙂 !
Be careful, all the restaurants close around 8 pm, leave in time otherwise the only option will be dinner at the local supermarket!!
Subscribe to Wings of Northern Wind
Keep up to date on the latest content, here at Wings of Northern Wind. Subscribe below.


text: The Tap Takeover Podcast takes over Romans' Pub for a special Milwaukee Beer Week Goose Island BCS event! We check in with Rich from Goose Island Brewing to discuss 2013 Bourbon Count Stout, the newly released Cooper Project, and other events around town. And we talk with Mike Romans to find out just exactly which barrels are currently aging in his cellar waiting to be tapped! And stay tuned for a full recap episode of Milwaukee Beer Week coming soon to the Podcast! Cheers!


text:
ROBBIE Brady is set to be out of the rest of the season after scans revealed he had torn a tendon in his knee.
The Burnley winger was stretchered off with his left knee in a brace after falling awkwardly n the defeat Leicester City on Saturday.
Brady went straight to hospital and the injury is as serious first feared and the Republic of Ireland will now see a specialist with a ruptured patellar tendon the diagnosis.
Clarets boss Sean Dyche said Brady would now undergo surgery and would be given 'time and care' as he recovers from the setback.
"Robbie will have surgery to repair a patellar tendon tear and will be out for a substantial recovery period," Dyche said.
"He will be given all the time and care he needs on his recovery and supported throughout from all of us at Burnley Football Club."
The injury has come just as the £13million winger was beginning to show his best form for the Clarets, contributing a goal and an assist in the win over Bournemouth and turning in a string of impressive displays.
His teammate for Burnley and international colleague Stephen Ward said earlier in the week a long-term absence for Brady would be a major blow for the Clarets.
"He's been outstanding for us recently and if it is bad he'll be a massive loss for us," he said.
Brady is the sixth Burnley player to suffer a serious knee injury in four-and-a-half years, with Sam Vokes, Kevin Long, Dean Marney, Ashley Barnes and Lukas Jutkiewicz all being diagnosed with cruciate ligament injuries, with Marney close to a first-team return after his second such injury in three years.
The Clarets were in the market for a winger in the summer transfer window, with a loan move for Everton's Aaron Lennon falling through, and with Brady now out long-term it is likely to be an area Sean Dyche is keen to strengthen in January.


text:
Toggle Navigation
Quote Search
It is not the mountain we conquer, but ourselves.
-- Sir Edmund Hillary
Author By Name:
Search Quotes
Shall we never have done with that cliche, so stupid that it could only be human, about the sympathy of animals for man when he is unhappy? Animals love happiness almost as much as we do. A fit of crying disturbs them, they'll sometimes imitate sobbing, and for a moment they'll reflect our sadness. But they flee unhappiness as they flee fever, and I believe that in the long run they are capable of boycotting it.
Sidonie Gabrielle Colette
Rashness is the faithful, but unhappy parent of misfortune.
R. Buckminster Fuller
Let us be grateful to people who make us happy; they are the charming gardeners who make our souls blossom.
Marcel Proust
Now and then it's good to pause in our pursuit of happiness and just be happy.
Guillaume Apollinaire
Let us be grateful to people who make us happy; they are the charming gardeners who make our souls blossom.
Marcel Proust
We cannot be contented because we are happy, and we cannot be happy because we are contented.
Walter Savage Landor
Look you, Doubloon, your zodiac here is the life of man in one round chapter. To begin: there's Aries, or the Ram -- lecherous dog, he begets us; then, Taurus, or the Bull -- he bumps us the first thing; then Gemini, or the Twins -- that is, Virtue and Vice; we try to reach Virtue, when lo! comes Cancer the Crab, and drags us back; and here, going from Virtue, Leo, a roaring Lion, lies in the path -- he gives a few fierce bites and surly dabs with his paw; we escape, and hail Virgo, the virgin! that's our first love; we marry and think to be happy for aye, when pop comes Libra, or the Scales -- happiness weighed and found wanting; and while we are very sad about that, Lord! how we suddenly jump, as Scorpio, or the Scorpion, stings us in rear; we are curing the wound, when come the arrows all round; Sagittarius, or the Archer, is amusing himself. As we pluck out the shafts, stand aside! here's the battering-ram, Capricornus, or the Goat; full tilt, he comes rushing, and headlong we are tossed; when Aquarius, or the Waterbearer, pours out his whole deluge and drowns us; and, to wind up, with Pisces, or the Fishes, we sleep.
Herman Melville
It's the most unhappy people who most fear change.
Mignon McLaughlin
The more refined one is, the more unhappy.
Anton Chekhov
Remember that as a teenager you are at the last stage in your life when you will be happy to hear that the phone is for you.
Fran Lebowitz
The person is always happy who is in the presence of something they cannot know in full. A person as advanced far in the study of morals who has mastered the difference between pride and vanity.
Sebastien-Roch Nicolas De Chamfort
In short, no association or alliance can be happy or stable without me. People can't long tolerate a ruler, nor can a master his servant, a maid her mistress, a teacher his pupil, a friend his friend nor a wife her husband, a landlord his tenant, a soldier his comrade nor a party-goer his companion, unless they sometimes have illusions about each other, make use of flattery, and have the sense to turn a blind eye and sweeten life for themselves with the honey of folly.
Desiderius Erasmus
When we are happy we are always good, but when we are good we are not always happy.
Oscar Wilde
It is wrong to assume that men of immense wealth are always happy.
John D. Rockefeller
To give pain is the tyranny; to make happy, the true empire of beauty.
Richard Steele
Happiness is always a by-product. It is probably a matter of temperament, and for anything I know it may be glandular. But it is not something that can be demanded from life, and if you are not happy you had better stop worrying about it and see what treasures you can pluck from your own brand of unhappiness.
Robertson Davies
I adore him... I have never been so happy. I have real love.
Princess of Wales Diana
All blame is a waste of time. No matter how much fault you find with another, and regardless of how much you blame him, it will not change you. The only thing blame does is to keep the focus off you when you are looking for external reasons to explain your unhappiness or frustration. You may succeed in making another feel guilty about something by blaming him, but you won't succeed in changing whatever it is about you that is making you unhappy.
Wayne Dyer
Let us all be happy and live within our means, even if we have to borrow the money to do it with.
Charles Farrar Browne
Indeed, man wishes to be happy even when he so lives as to make happiness impossible.
Saint Augustine
All marriages are happy. It's living together afterwards that is difficult.
Source Unknown
I know that I can give love for a minute, for half an hour; for a day, for a month, but I can give and I'm very happy to do that and I want to do that.
Princess of Wales Diana
As a well spent day brings happy sleep, so life well used brings happy death.
Leonardo Da Vinci
No man can be happy without a friend, nor be sure of his friend till he is unhappy.
F. Scott K. Fitzgerald
We see many who are struggling against adversity who are happy, and more although abounding in wealth, who are wretched.
Publius Cornelius Tacitus
Hope is the last to abandon the unhappy.
Italian Proverb
People are just as happy as they make up their minds to be.
Abraham Lincoln
We must laugh before we are happy, for fear we die before we laugh at all.
Jean De La Bruyere
One of the sanest, surest, and most generous joys of life comes from being happy over the good fortune of others.
Archibald Rutledge
My mother has always been unhappy with what I do. She would rather I do something nicer, like be a bricklayer.
Mick Jagger


text:
At the end of a thrilling day of cross-country at the NAF Five Star Hartpury International Horse Trials, Britain's Tina Cook and Billy The Red reigned supreme in the NAF Magic CIC3*.
Sitting in 5th place overnight after the dressage, Tina and Billy The Red pulled off a beautiful clear round showjumping before heading out on Eric Winter's 3* course. The pair then performed a cross-country masterclass to finish on their dressage score of 25.6 and pull four places up the leaderboard into first position.
"The season has been unfortunate for me as I started with great hopes after being fourth at the Europeans last year and Billy The Red is only an 11-year-old, so he's a young horse," said Tina. "Then we had our fall at Burnham Market where I dislocated and fractured my shoulder badly so that caused me to miss a core of the season. Everything fell into place here, he nailed a good test because he is a world-class horse and I'm thrilled — it's been a while since I've had a big win and it was a strong field. The ground was fantastic as was the course, and it was a great prep for the autumn events."
A clear showjumping and cross-country round with just 0.4 time penalties brought Piggy French and Quarryquest Echo up from 6th overnight to second place. Piggy also took 8th riding Vanir Kamira who showjumped clear and earned just 8 time penalties across country to finish on 32.2. Sam Ecroyd and Wodan II made a huge leap from 11th overnight to third when pulling off a clear showjumping and cross country round with just 0.8 time penalties to finish on 28.3.
The leaderboard is relatively unchanged in the NAF MPower CCI1* ranks, with Dani Evans and Hollywood Dancer remaining in the lead after a spectacular clear cross-country round to stay on their dressage score of 27.1. Susie Berry and Fernhill G also pulled off a super clear round across country to stay in second place on 27.6, while Vicky Tuffs and Heartbeat move up into third place after a clear cross country. Vicky moves into third ahead of overnight third-placed rider Erika Sjostrom and Dantino B on collectives. Both riders stay on 27.8.
It's all change in the NAF Superflex CCI2* with Japan's Ryuzo Kitajima taking centre stage after cross-country on Vick Du Gisors JRA after overnight leader Aoife Clark and Calling Card bowed out on the cross-country course. Emily Philps and Fallulah fill second place on 31 after a clear cross country round, while Alicia Hawker moves up to third from 12th overnight with Lawa on 33.3.
The sun shone on the Hartpury Summer Fair which saw huge crowds of local visitors through the gate to enjoy a fun-filled day of family entertainment.
Tickets are still available for Sunday 12 August, at £5 per person. Under 16s and parking is free all weekend.
To stay up to date with the latest news and results, visit www.hartpuryhorsetrials.co.uk or Facebook @hartpuryhorsetrials


text:
Now we have the Family Research Council and other entities calling for an end to government aid to Planned Parenthood, on the grounds that PP has plenty of money and doesn't need the aid. (See "Abortion foes open a new front." ) This despite the fact that one-third of PP's funding comes from such aid. That's a pretty big hit to take in the budget. Where do they think the shortfall would come from?
Of course, that's the point. They don't care where the funds would come from. In fact, they hope that the loss of those funds would seriously cripple PP's programs and services, especially abortion services, even though those make up only 3% of all that Planned Parenthood does. This illustrates the problem with anti-abortion activism: its propensity to throw the baby out with the bathwater.
The fact that 38% of PP's services is contraception-related, 29% is for STD testing and treatment and 19% is for cancer-screening shows that only a small proportion of the money collected by PP should be offensive to anti-abortionists. Of course now we've got anti-abortionists carping about birth control, as if it was responsible for abortions. Wish they'd get their science straight!
And now we have anti-abortionists using stealth tactics to make their case that PP is basically an abortion mill. (See "Activists go undercover at Planned Parenthood.")


text:
Russ Chisholm, Seminal Queen (Panel 3) (2011), oil on canvas; 9.84″ x 11.81″; courtesy Marc Jancou Contemporary
* * *
When was it that painters became smart—or at least affected smartness? Historians can undoubtedly point to precedents before the advent of post-modernism, but there's no doubt that visual artists nowadays are ready-equipped with a spiel—literary and theoretical flourishes by which their efforts are invested with, you know, meaning. Painters have always looked to the broader world for inspiration. But what are we to make of Ross Chisholm, whose this, that and the other corpus is on view at Marc Jancou Contemporary?
Chisholm's exhibition, Garden of Forking Paths, takes its title from a short story by Jorge Luis Borges and, in particular, the notion that "time forks perpetually toward innumerable futures." Reading the press release, we learn that the paintings draw "attention to the shifting conventions of, but sustained urge for, self-representation." Chisholm busies himself with "subverting…iconic pillars of art history and the versions of the past they present." How subversive can Chisholm be if he's all but indistinguishable from any number of contemporary pasticheurs?
Pastiche is Chisholm's all—that and a fondness for Francis Bacon. Whether altering found photographs, quoting paintings by Joshua Reynolds and Allan Ramsay or bringing a fetching patina to musty runs of color, Chisholm is never truly in thrall to his medium. Instead, he indulges in heady games. Chisholm's mock variations on classical portraiture are especially over-determined. As exercises in passive-aggressive desecration, they have their adolescent attractions. The piece of packing tape—left oh, so casually!—on the surface of Seminal Queen (2011) would be the envy of a sophomore painting student who's only just discovered Duchamp.
Chisholm misses the point. Aping the Old Masters isn't the same thing as channeling them, and there's only so much mileage to be gained from condescending to tradition. Would that Chisholm actually believed in something—then his art might do more than coast on mere expertise. And there are skills here, definitely. If Chisholm forgot about "destabilizing the authority of the image" and similar dead-end tropes, he might come up with pictures that are good rather than smart.
© 2011 Mario Naves
Originally published in the October 12-October 25, 2011 edition of City Arts.