| I l@ve RuBoard |
A.3 Major Changes Between 1.3 and 1.5.2This section describes significant language, library, tool, and C API changes in Python between the first edition of this book (Python 1.3) and Python release 1.5.2. A.3.1 Core Language ChangesThe following sections describe changes made to the Python language itself. A.3.1.1 Pseudo-private class attributesPython now provides a name-mangling protocol that hides attribute names used by classes. Inside a class statement, a name of the form _ _X is automatically changed by Python to _Class_ _X , where Class is the name of the class being defined by the statement. Because the enclosing class name is prepended, this feature limits the possibilities of name clashes when you extend or mix existing classes. Note that this is not a "private" mechanism at all, just a class name localization feature to minimize name clashes in hierarchies and the shared instance object's namespace at the bottom of the attribute inheritance links chain. A.3.1.2 Class exceptionsExceptions may now take the form of class (and class instance) objects. The intent is to support exception categories. Because an except clause will now match a raised exception if it names the raised class or any of its superclasses, specifying superclasses allows try statements to catch broad categories without listing all members explicitly (e.g., catching a numeric-error superclass exception will also catch specific kinds of numeric errors). Python's standard built-in exceptions are now classes (instead of strings) and have been organized into a shallow class hierarchy; see the library manual for details. A.3.1.3 Package importsImport statements may now reference directory paths on your computer by dotted-path syntax. For instance: import directory1.directory2.module # and use path from directory1.directory2.module import name # and use "name" Both load a module nested two levels deep in packages (directories). The leftmost package name in an import path (directory1) must be a directory within a directory that is listed in the Python module search path (sys.path initialized from PYTHONPATH). Thereafter, the import statement's path denotes subdirectories to follow. Paths prevent module name conflicts when installing multiple Python systems on the same machine that expect to find their own version of the same module name (otherwise, only the first on PYTHONPATH wins). Unlike the older ni module that this feature replaces, the new package support is always available (without running special imports) and requires each package directory along an import path to contain a (possibly empty) __init__.py module file to identify the directory as a package, and serve as its namespace if imported directly. Packages tend to work better with from than with import, since the full path must be repeated to use imported objects after an import. A.3.1.4 New assert statementPython 1.5 added a new statement: assert test [, value] which is the same as: if __debug__: if not test: raise AssertionError, value Assertions are mostly meant for debugging, but can also be used to specify program constraints (e.g., type tests on entry to functions). A.3.1.5 Reserved word changesThe word "assert" was added to the list of Python reserved words; "access" was removed (it has now been deprecated in earnest). A.3.1.6 New dictionary methodsA few convenience methods were added to the built-in dictionary object to avoid the need for manual loops: D.clear( ), D.copy( ), D.update( ), and D.get( ). The first two methods empty and copy dictionaries, respectively. D1.update(D2) is equivalent to the loop: for k in D2.keys( ): D1[k] = D2[k] D.get(k) returns D[k] if it exists, or None (or its optional second argument) if the key does not exist. A.3.1.7 New list methodsList objects have a new method, pop, to fetch and delete the last item of the list: x = s.pop( ) ...is the same as the two statements... x = s[-1]; del s[-1] and extend, to concatenate a list of items on the end, in place: s.extend(x) ...is the same as... s[len(s):len(s)] = x The pop method can also be passed an index to delete (it defaults to -1). Unlike append, extend is passed an entire list and adds each of its items at the end. A.3.1.8 "Raw" string constantsIn support of regular expressions and Windows, Python allows string constants to be written in the form r"...\...", which works like a normal string except that Python leaves any backslashes in the string alone. They remain as literal \ characters rather than being interpreted as special escape codes by Python. A.3.1.9 Complex number typePython now supports complex number constants (e.g., 1+3j) and complex arithmetic operations (normal math operators, plus a cmath module with many of the math module's functions for complex numbers). A.3.1.10 Printing cyclic objects doesn't core dumpObjects created with code like L.append(L) are now detected and printed specially by the interpreter. In the past, trying to print cyclic objects caused the interpreter to loop recursively (which eventually led to a core dump). A.3.1.11 raise without arguments: re-raiseA raise statement without any exception or extra-data arguments now makes Python re-raise the most recently raised uncaught exception. A.3.1.12 raise forms for class exceptionsBecause exceptions can now either be string objects or classes and class instances, you can use any of the following raise statement forms: raise string # matches except with same string object raise string, data # same, with optional data raise class, instance # matches except with class or its superclass raise instance # same as: raise instance.__class__, instance raise # reraise last exception You can also use the following three forms, which are for backwards-compatibility with earlier releases where all built-in exceptions were strings: raise class # same as: raise class( ) (and: raise class, instance) raise class, arg # same as: raise class(arg) raise class, (arg,...) # same as: raise class(args...) A.3.1.13 Power operator X ** YThe new ** binary operator computes the left operand raised to the power of the right operand. It works much like the built-in pow function. A.3.1.14 Generalized sequence assignmentsIn an assignment (= statements and other assignment contexts), you can now assign any sort of sequence on the right to a list or tuple on the left (e.g., (A,B) = seq, [A,B] = seq ). In the past, the sequence types had to match. A.3.1.15 It's fasterPython 1.5 has been clocked at almost twice the speed of its predecessors on the Lib/test/pystone.py benchmark. (I've seen almost a threefold speedup in other tests.) A.3.2 Library ChangesThe following sections describe changes made to the Python standard library. A.3.2.1 dir(X) now works on more objectsThe built-in dir function now reports attributes for modules, classes, and class instances, as well as for built-in objects such as lists, dictionaries, and files. You don't need to use members like __methods__ (but you still can). A.3.2.2 New conversions: int(X), float(X), list(S)The int and float built-in functions now accept string arguments, and convert from strings to numbers exactly like string.atoi/atof. The new list(S) built-in function converts any sequence to a list, much like the older and obscure map(None, S) trick. A.3.2.3 The new re regular expression moduleA new regular expression module, re, offers full-blown Perl-style regular expression matching. See Chapter 18, for details. The older regex module described in the first edition is still available, but considered obsolete. A.3.2.4 splitfields/joinfields became split/joinThe split and join functions in the string module were generalized to do the same work as the original splitfields and joinfields. A.3.2.5 Persistence: unpickler no longer calls __init__Beginning in Python 1.5, the pickle module's unpickler (loader) no longer calls class __init__ methods to recreate pickled class instance objects. This means that classes no longer need defaults for all constructor arguments to be used for persistent objects. To force Python to call the __init_ _ method (as it did before), classes must provide a special __getinitargs__ method; see the library manual for details. A.3.2.6 Object pickler coded in C: cPickleAn implementation of the pickle module in C is now a standard part of Python. It's called cPickle and is reportedly many times faster than the original pickle. If present, the shelve module loads it instead of pickle automatically. A.3.2.7 anydbm.open now expects a "c" second argument for prior behaviorTo open a DBM file in "create new or open existing for read+write" mode, pass a "c" in argument 2 to anydbm.open. This changed as of Python 1.5.2; passing a "c" now does what passing no second argument used to do (the second argument now defaults to "r" -- read-only). This does not impact shelve.open. A.3.2.8 rand module replaced by random moduleThe rand module is now deprecated; use random instead. A.3.2.9 Assorted Tkinter changesTkinter became portable to and sprouted native look-and-feel for all major platforms (Windows, X, Macs). There has been a variety of changes in the Tkinter GUI interface:
A.3.2.10 CGI module interface changeThe CGI interface changed. An older FormContent interface was deprecated in favor of the FieldStorage object's interface. See the library manual for details. A.3.2.11 site.py, user.py, and PYTHONHOMEThese scripts are automatically run by Python on startup, used to tailor initial paths configuration. See the library manuals for details. A.3.2.12 Assignment to os.environ[key] calls putenvAssigning to a key in the os.environ dictionary now updates the corresponding environment variable in the C environment. It triggers a call to the C library's putenv routine such that the changes are reflected in integrated C code layers as well as in the environment of any child processes spawned by the Python program. putenv is now exposed in the os module too (os.putenv). A.3.2.13 New sys.exc_info( ) tupleThe new exc_info( ) function in the sys module returns a tuple of values corresponding to sys.exc_type and sys.exc_value. These older names access a single global exception; exc_info is specific to the calling thread. A.3.2.14 The new operator moduleThere is a new standard module called operator, which provides functions that implement most of the built-in Python expression operators. For instance, operator.add(X,Y) does the same thing as X+Y, but because operator module exports are functions, they are sometimes handy to use in things like map, so you don't have to create a function or use a lambda form. A.3.3 Tool ChangesThe following sections describe major Python tool-related changes. A.3.3.1 JPython (a.k.a. Jython): a Python-to-Java compilerThe new JPython system is an alternative Python implementation that compiles Python programs to Java Virtual Machine ( JVM) bytecode and provides hooks for integrating Python and Java programs. See Chapter 15. A.3.3.2 MS-Windows ports: COM, TkinterThe COM interfaces in the Python Windows ports have evolved substantially since the first edition's descriptions (it was "OLE" back then); see Chapter 15. Python also now ships as a self-installer for Windows, with built-in support for the Tkinter interface, DBM-style files, and more; it's a simple double-click to install today. A.3.3.3 SWIG growth, C++ shadow classesThe SWIG system has become a primary extension writers' tool, with new "shadow classes" for wrapping C++ classes. See Chapter 19. A.3.3.4 Zope (formerly Bobo): Python objects for the WebThis system for publishing Python objects on the Web has grown to become a popular tool for CGI programmers and web scripters in general. See the Zope section in Chapter 15. A.3.3.5 HTMLgen: making HTML from Python classesThis tool for generating correct HTML files (web page layouts) from Python class object trees has grown to maturity. See Chapter 15. A.3.3.6 PMW: Python mega-widgets for TkinterThe PMW system provides powerful, higher-level widgets for Tkinter-based GUIs in Python. See Chapter 6. A.3.3.7 IDLE: an integrated development environment GUIPython now ships with a point-and-click development interface named IDLE. Written in Python using the Tkinter GUI library, IDLE either comes in the source library's Tools directory or is automatically installed with Python itself (on Windows, see IDLE's entry in the Python menu within your Start button menus). IDLE offers a syntax-coloring text editor, a graphical debugger, an object browser, and more. If you have Python with Tk support enabled and are accustomed to more advanced development interfaces, IDLE provides a feature-rich alternative to the traditional Python command line. IDLE does not provide a GUI builder today. A.3.3.8 Other tool growth: PIL, NumPy, Database APIThe PIL image processing and NumPy numeric programming systems have matured considerably, and a portable database API for Python has been released. See Chapter 6 and Chapter 16. A.3.4 Python/C Integration API ChangesThe following sections describe changes made to the Python C API. A.3.4.1 A single Python.h header fileAll useful Python symbols are now exported in the single Python.h header file; no other header files need be imported in most cases. A.3.4.2 A single libpython*.a C library fileAll Python interpreter code is now packaged in a single library file when you build Python. For instance, under Python 1.5, you need only link in libpython1.5.a when embedding Python (instead of the older scheme's four libraries plus .o's). A.3.4.3 The "Great (Grand?) Renaming" is completeAll exposed Python symbols now start with a "Py" prefix. A.3.4.4 Threading support, multiple interpretersA handful of new API tools provide better support for threads when embedding Python. For instance, there are tools for finalizing Python (Py_Finalize) and for creating "multiple interpreters" (Py_NewInterpreter). Note that spawning Python language threads may be a viable alternative to C-level threads, and multiple namespaces are often sufficient to isolate names used in independent system components; both schemes are easier to manage than multiple interpreters and threads. But in some threaded programs, it's also useful to have one copy of system modules and structures per thread, and this is where multiple interpreters come in handy (e.g., without one copy per thread, imports might find an already-loaded module in the sys.modules table if it was imported by a different thread). See the new C API documentation manuals for details. A.3.4.5 New Python C API documentationThere is a new reference manual that ships with Python and documents major C API tools and behavior. It's not fully fleshed out yet, but it's a useful start. |
| I l@ve RuBoard |


Apple releases iOS 13.2.3 update with fixes for Search, Messages and more
Apple's rapid release of iOS 13 and iPadOS 13 updates continues
by Patrick O'RourkeApple continues to push out iOS and iPadOS updates at a swift pace.
iOS 13.2.3, the latest update, solves several strange bugs that appeared in the mobile operating systems following the release of iOS 13. For example, the update includes a fix for the Spotlight filter that makes it work more consistently on an operating system level, as well as across Apple’s Mail, Files and Notes.
Further, apps that download content in the background have been fixed, along with Mail now fetching emails correctly. Apple’s update notes also mention that a problem causing photos, attachments and links to not display correctly in the Messages app has been solved.
Since its release, iOS 13 has been a mess in some respects, but it’s great to see Apple releasing updates at a rapid rate. iOS 13.3 is currently being tested in both developer and public betas.
You can download iOS 13.2.3 by navigating to ‘Settings,’ then ‘Genera,’ ‘About,’ and finally ‘Software Update.’


Tesla’s Elon Musk touts 146,000 Cybertruck orders just two days after reveal
Tesla Inc. Chief Executive Officer Elon Musk said orders for its Cybertruck have climbed to 187,000 even after two windows unexpectedly shattered in Thursday’s big reveal.
The electric-car maker has a history of unveiling future products to throngs of excited customers, taking deposits, and then delivering years later. Two years ago, Tesla showed off a Semi truck and a next generation Roadster sports car, but neither vehicle is in production yet. This spring, Musk unveiled the Model Y crossover; that vehicle is slated to begin production next summer.
The orders, an increase from a 146,000 figure that Musk announced in a Tweet on Saturday, underscores the hard-to-resist nature of announcing deposits, even when they are fully refundable and may never be converted into actual sales.
Tesla’s reservation list has long been a source of intrigue for investors, analysts, journalists, fans and skeptics of the company, as it’s often used as a proxy for demand. Musk’s tweet breaks with the recent practice at Tesla, which has stopped giving reservation figures on its quarterly earnings calls, saying the metric wasn’t relevant.
"We don’t want to comment on the granularity of deposits -- again, people just read too much into those,” Musk said on Tesla’s first-quarter earnings call in April, when asked about the Model Y.
Tesla’s website allows customers to order the truck for a fully refundable $100, and says they can complete their configuration "as production nears in late 2021.” Musk said in a tweet Saturday that 42% had ordered the dual-motor option, which starts at $49,900, while 41% have ordered the $69,900 triple-motor option, production of which is expected to begin in late 2022. Just 17% ordered the single-motor version, which begins at $39,900.
The $100 deposit for the Cybertruck is far cheaper than the $1,000 that was required to reserve a Model 3 sedan.
"Reservations are not relevant for us,” former Chief Financial Officer Deepak Ahuja said in January, during the company’s 2018 fourth-quarter earnings call. "Now we do have a large reservations backlog still, which tells us that a lot of customers are still waiting for those cars. But I don’t think it’s appropriate to share the reservations number.”
Tesla never released an order or reservation figure for the Model Y. The company had $665 million in customer deposits as of Sept. 30, according to a regulatory filing.
In a demonstration of the truck’s toughness, long-time Tesla lead designer Franz von Holzhausen whacked the Cybertruck’s stainless steel door with a mallet, showing that it couldn’t be dented. But when he threw a metallic ball at the driver side front window, it shattered.
‘Too Hard’
The crowd gasped. "Oh my f---ing god,” said Musk. "Maybe that was a little too hard.”
So von Holzhausen tried a second, softer throw -- this time targeting the truck’s rear window -- only to see that shatter as well.
It wasn’t immediately clear who supplied the glass or if Tesla made what it called "Armor Glass” completely in-house. Tesla entered the glass technology business back in 2016, and has an internal group known as Tesla Glass.
Musk said his team threw the same steel ball at the window several times before the event and didn’t even scratch the glass. Late Friday, he tweeted out a short video of von Holzhausen that has been viewed more than 6 million times.
The angular, futuristic design and the shattering glass generated enormous publicity for Tesla and its truck, but shares tumbled 6.1% to $333.04 Friday, the sharpest decline in almost two months.
Read also
Read More
Novartis agrees to buy Medicines Co. in $6.8 billion deal
Novartis AG agreed to buy Medicines Co. for an equity value of about $6.8 billion, snapping up a promising cholesterol drug and adding to a string of acquisitions for Chief Executive Officer Vas Narasimhan.
Read More
Bloomberg News will not investigate Michael Bloomberg or Democratic rivals
Bloomberg News said on Sunday it will not investigate its founder and former New York mayor, Michael Bloomberg, after he launched his candidacy for the Democratic primaries, continuing a policy of limiting coverage of its top executive.
Read More
French NGOs slam Amazon environmental impact ahead of 'Black Friday'
Two French environmental NGOs and a union group on Sunday slammed the environmental impact of Amazon, vowing to disrupt its "Black Friday" sale campaign later this week.
 OK, boomer
Tesla Inc.’s much-anticipated Cybertruck concept vehicle received an underwhelming reception from many investors and some of the automotive trade press due to its polarizing design and lack of typical pickup features. They may just be the wrong audience.
Read More
Shattered glass: Futuristic design questioned after Tesla Cybertruck launch
Tesla Inc's launch of its futuristic Cybertruck pickup suffered a setback when its "armored glass" windows shattered, but it was the overall look of the car that worried Wall Street on Friday, and the company's shares fell more than 6%.


So you want to have a secret. You may not even be sure what the secret is. You are pretty sure, though, that you want everyone to know that there is a secret. That you have. That everyone else doesn't have. Because it is yours. And you have it.
Sometimes ostentatious secrets are eventually revealed, and sometimes they stay that way forever. This can be just a Running Gag, or it can be source of dramatic tension as a MacGuffin. In fact, their primary use is as a MacGuffin, reserved for use in a B-Story, or possibly even a "C"-story, a narrative thread that is around just to build continuity.
One problem is that secrets tend to build up to a Secret Critical Mass. After this point, the obsession of others to discover the secret far outweighs any potential dramatic payoff from The Reveal, and it requires some extremely deft Playing with a Trope to avoid an Anti-Climax.
The Ancient Tradition and the Ancient Conspiracy are often ostentatious secrets: their existence can be widely known, and membership may also be, though it's less common.
Contrast the Open Secret and Everybody Knew Already, both where not only is the existence of the secret well-known, but everybody knows the secret itself.
 Subverted when she reveals she's an undercover cop, and the box holds her gun. Doubly subverted when she reveals that the box only held the gun that one time, and that she still has her REAL box.
- In Slayers, the motives of Xellos are always a secret. In one manga chapter, two nobles have a secret box they keep sending back and forth to each other. It eventually turns out to contain a diary which they use to exchange shallow gossip.
- In Asterix and the Olympic Games, Asterix and Getafix talk rather loudly next to the Romans about how they're not allowed to drink the magic potion sitting in the cauldron in a certain nearby shed whose door doesn't shut properly and isn't guarded by night, in order to trick the Romans into drinking the magic potion and thereby disqualifying themselves.
- In The Dark Knight Returns, Ollie notes this to Bruce:
Sure, you like to play it mysterious, but it's a loud kind of mysterious. Especially lately.
- Calvin and Hobbes, at the start of the first Get Rid Of Slimy girlS club arc:
Calvin: Good news, Hobbes! I'm starting a secret club, and you can be in it!
Hobbes: Oh, boy!
Calvin: It'll be great! We'll think of secret names for ourselves, secret codes for our secret correspondence, a secret handshake... We'll have a secret club-house with a secret knock to get in, and we'll do big secretive things!
Hobbes: Why all the secrecy?
Calvin: People pay more attention to you when they think you're up to something.- In another strip, Calvin pulls this in Show and Tell. He loudly declares that he's not showing the class what he brought, and declares that it'll haunt them for the rest of their lives.
- The mysterious blue box in the David Lynch film Mulholland Dr., which has a matching blue key. It is shown to open once or twice, though the Mind Screw makes it hard to tell what if anything is going on.
- The Prestige: Borden's cryptic comment in the page quote alludes to his own secret: He is an identical twin. Not very impressive on its own. The trick he uses it for? The Transported Man, wherein he appears to be teleported instantly across the stage. The trick works so well because no one knows the secret. Not even one twin's wife or the other's lover.
- Marsellus Wallace's briefcase in Pulp Fiction, the contents of which are described as beautiful, are never known to the audience. Wild Mass Guessing ensues.
- According to this article, it was originally just diamonds, but they decided that an ostentatious secret would be more interesting.
- Another one involving Marsellus is the bandage on the back of his neck. Ving Rhames has a scar that they were unable to cover up with make-up, so they put a bandage on it instead. Of course, the bandage ends up standing out a lot more than the scar would have, and it's led people to think that it's meant to show the spot where his soul was ripped out, his soul being one of the guesses for the contents of the briefcase. It's a mystery as to why the cast even went through the trouble of covering it up, since it certainly wouldn't be unusual for a mobster to have scars.
- Dave Barry Slept Here, Richard Nixon campaigned in 1968 on his secret plan to end The Vietnam War, "but of course he couldn't tell the voters what it was, because then it couldn't have been a secret plan." Immediately upon being elected, Nixon has the secret peace plan buried to protect the national security, though he could have had it dug up and implemented at any time.
- A running question in Emma Lathen's novels about banker/amateur detective John Putnam Thatcher is what's in that tin box in his secretary's desk? Thatcher is too much the gentleman to peek when Miss Corsa is elsewhere, but that doesn't interfere with his attempts to deduce the solution.
- Formed the focus of an episode of Dharma & Greg. Greg has a locked mystery box and Dharma is torn between her curiosity at wanting to know what's inside and her love for Greg, whose trust she doesn't want to betray. Greg realizes that the box is driving Dharma nuts, so he first gives Dharma the key, so she can decide for herself whether to invade his privacy. This drives Dharma even crazier, so Greg empties it and puts the stuff away in their apartment without telling Dharma what was in there. At the end of the episode, Dharma is sitting on the couch in their apartment and concludes that she is in the box! Very Zen. Or something.
- Doctor Who? Doctor Who?? Doctor Who??!
- Felicity used this with Felicity's witchy roommate Meghan, who made a big issue of no one having permission to look in her locked box. In this case the box was used as a running gag and its contents were never revealed, although there was a Something Completely Different episode styled after The Twilight Zone in which it was intimated that all the series regulars were actually trapped in a magical universe within the box.

- This is apparently one of Odin's powers. As Neil Gaiman put it in American Gods: "And I know an 18th charm & that charm I can tell to no man, for a secret that nobody knows but you is the most powerful thing of all."
- Also, whatever Odin whispered in his son Baldur's ear as he, Baldur, lay on his funeral pyre. Odin would use that secret to best Vafthrudnir in a Riddle Contest.
- The eponymous Secret of Monkey Island. Lampshaded in the sequels.
- The Pyro's identity/gender/species in Team Fortress 2.
- In The Order of the Stick, the unnamed and unidentified "Monster in the Darkness" is a living Ostentatious Secret. The main villain of the series keeps him shrouded in darkness, despite its constant objections. He is kept shrouded in order to keep him a secret before his final climactic confrontation with the heroes — he's even been held back from fighting them (despite apparently being extremely powerful) because revealing himself at that point in time wouldn't have been narratively climactic enough.
- V's gender would qualify for this as well.
- Survival of the Fittest character Alice Jones has her backpack as an Ostentatious Secret. What's inside? The severed head of Guy Rapide, her almost-boyfriend.
'Boxer' Carvalho: (uneasily) What's in there?
Alice Jones: (smiles) ...It's a secret.
- A meta-example for Gargoyles is whatever Titania whispers to Fox at the end of "The Gathering". Creator Greg Weisman has said that he wants to keep it secret in case he ever gets to make the series again and use it, but admits that it's not as great as people are probably hoping.
- Spongebob Squarepants, "The Secret Box": SpongeBob tests his friendship with Patrick to the limits when he tries to learn the contents of Patrick's "secret box", and eventually resorts to sneaking into Pat's house in the dead of night. It turns out to be... a string. After SpongeBob leaves, it turns out that pulling the string opens a secret compartment, with an embarrassing photo of SpongeBob in it, specifically from the Christmas party (which is actually one of the guesses Spongebob made at the contents of the box)..
- Robin's incredibly important stolen briefcase in Teen Titans is revealed to contain _____________.
- In general, intelligence agencies seems to have a bit of a fetish for prominent architecture. The CIA has the George Bush Center, the NSA has that sinister black monolith at Fort Meade (Which is engraved with a variety of messages encrypted by different methods. One of the messages is only known by two people, the man who invented the algorithm and the man who chose the message to encrypt and engraved it on the monolith), MI6 has 85 Vauxhall Cross, GCHQ has that doughnut-shaped building in Cheltenham, the NKVD and KGB has the Lubyanka Building in Moscow. All together, it does project a vague "come at me, bro" attitude to their enemies.
- Though apparently, in the case of British intelligence services at least, the only reason that they haven't moved is that they haven't found anywhere that's both large enough and anonymous enough to suit their purposes. Which is very believable, since MI5 didn't officially exist until 1989, GCHQ and MI6 until 1994, and none of them came out of the shadows by choice.


Hasina will fly to Dubai Saturday to attend airshow, signing of deals
by bdnews24.comPrime Minister Sheikh Hasina will leave Dhaka on Saturday for the United Arab Emirates to attend the Dubai Airshow 2019 and witness the signing of a number of bilateral deals.
She is visiting the UAE at the invitation of the ruler of Dubai Sheikh Mohammed Bin Rashid al Maktoum.
An Emirates airline flight carrying the prime minister and her entourage is scheduled to start from Shahjalal International Airport in the capital at 6:40pm.
The flight is expected to arrive in Dubai International Airport at 10:10pm local time. The Bangladesh Ambassador to the UAE Muhammad Imran will welcome her there.
She will stay at Shangri-la hotel during the visit and attend the airshow on Sunday.
The Bangladesh leader will also meet the Crown Prince of Abu Dhabi Sheikh Mohammed Bin Zayed Al Nahyan, and Chairwoman of the General Women’s Union Sheikha Fatima Bint Mubarak, among others, during the four-day visit, Foreign Minister AK Abdul Momen said on Thursday.
The prime minister will witness the signing of bilateral agreements between the Bangladesh Investment Development Authority and Emirates Development Authority, the Bangladesh Economic Zone Authority and Emirates Economic Zone Authority, and a protocol on the allotment of a piece of land for the Bangladesh embassy in Abu Dhabi.
Hasina is also expected to meet with big investment groups and business in the UAE.
The foreign minister said the UAE's DP World -- a global port operator -- has also expressed interest in developing sea ports and related infrastructure in Bangladesh.
Hasina will inaugurate the NID registration programme for non-resident Bangladeshis living in the UAE at the embassy in Abu Dhabi on Monday before returning to Bangladesh on Tuesday.


Policy¶
1. What Does a Policy Look Like¶
A policy describes how services (either individually or as a whole) ought to behave. More specifically, a policy describes which states of the cloud are permitted and which are not. Or a policy describes which actions to take in each state of the cloud, in order to transition the cloud to one of those permitted states. For example For example, a policy might simply state that the minimum password length on all systems is eight characters, or a policy might state that if the minimum password length on some system is less than 8 that the minimum length should be reset to 8.
In both cases, the policy relies on knowing the state of the cloud. The state of the cloud is the amalgamation of the states of all the services running in the cloud. In Congress, the state of each service is represented as a collection of tables (see Cloud Services). The policy language determines whether any violation exists given the content of the state tables.
For example, one desirable policy is that each Neutron port has at most one IP address. That means that the following table mapping port id to ip address with the schema “port(id, ip)” is permitted by the policy.
| ID | IP |
|---|---|
| “66dafde0-a49c-11e3-be40-425861b86ab6” | “<IP_ADDRESS>” |
| “73e31d4c-e89b-12d3-a456-426655440000” | “<IP_ADDRESS>” |
Whereas, the following table is a violation.
| ID | IP |
|---|---|
| “66dafde0-a49c-11e3-be40-425861b86ab6” | “<IP_ADDRESS>” |
| “66dafde0-a49c-11e3-be40-425861b86ab6” | “<IP_ADDRESS>” |
| “73e31d4c-e89b-12d3-a456-426655440000” | “<IP_ADDRESS>” |
This is the policy written in Congress’s policy language:
- error(port_id, ip1, ip2) :-
- port(port_id, ip1), port(port_id, ip2), not equal(ip1, ip2);
Note that the policy above does not mention specific table content; instead it describes the general condition of tables. The policy says that for every row in the port table, no two rows should have the same ID and different IPs.
This example verifies a single table within Neutron, but a policy can use many tables as well. Those tables might all come from the same cloud service (e.g. all the tables might be Neutron tables), or the tables may come from different cloud services (e.g. some tables from Neutron, others from Nova).
For example, if we have the following table schemas from Nova, Neutron, and ActiveDirectory, we could write a policy that says every network connected to a VM must either be public or owned by someone in the same group as the VM owner.:
error(vm, network) :-
nova:virtual_machine(vm)
nova:network(vm, network)
nova:owner(vm, vm_owner)
neutron:owner(network, network_owner)
not neutron:public_network(network)
not same_group(vm_owner, network_owner)
same_group(user1, user2) :-
ad:group(user1, group)
ad:group(user2, group)
And if one of these errors occurs, the right solution is to disconnect the offending network (as opposed to deleting the VM, changing the owner, or any of the other feasible options):
execute[neutron:disconnectNetwork(vm, network)] :-
error(vm, network)
The language Congress supports for expressing policy is called Datalog, a declarative language derived from SQL and first-order logic that has been the subject of research and development for decades.
2. Datalog Policy Language¶
As a policy writer, your goal is to define the contents of the error table, and in so doing to describe exactly those conditions that must be true when policy is being obeyed.
As a policy writer, you can also describe which actions Congress should take when policy is being violated by using the execute operator and thinking of the action to be executed as if it were a table itself.
Either when defining policy directly or describing the conditions under which actions should be executed to eliminate policy violations, it is often useful to use higher-level concepts than the cloud services provide natively. Datalog allows us to do this by defining new tables (higher-level concepts) in terms of existing tables (lower-level concepts) by writing rules. For example, OpenStack does not tell us directly which VMs are connected to the internet; rather, it provides a collection of lower-level API calls from which we can derive that information. Using Datalog we can define a table that lists all of the VMs connected to the internet in terms of the tables that Nova/Neutron support directly. As another example, if Keystone stores some collection of user groups and Active Directory stores a collection of user groups, we might want to create a new table that represents all the groups from either Keystone or Active Directory.
Datalog has a collection of core features for manipulating tables, and it has a collection of more advanced features that become important when you go beyond toy examples.
2.1 Core Datalog Features¶
Since Datalog is entirely concerned with tables, it’s not surprising that Datalog allows us to represent concrete tables directly in the language.
Concrete tables. Suppose we want to use Datalog to represent a Neutron table that lists which ports have been assigned which IPs, such as the one shown below.
Table: neutron:port_ip
| ID | IP |
|---|---|
| “66dafde0-a49c-11e3-be40-425861b86ab6” | “<IP_ADDRESS>” |
| “66dafde0-a49c-11e3-be40-425861b86ab6” | “<IP_ADDRESS>” |
| “73e31d4c-e89b-12d3-a456-426655440000” | “<IP_ADDRESS>” |
To represent this table, we write the following Datalog:
neutron:port_ip("66dafde0-a49c-11e3-be40-425861b86ab6", "<IP_ADDRESS>")
neutron:port_ip("66dafde0-a49c-11e3-be40-425861b86ab6", "<IP_ADDRESS>")
neutron:port_ip("73e31d4c-e89b-12d3-a456-426655440000", "<IP_ADDRESS>")
Each of the Datalog statements above is called a ground atom (or ground
fact). A ground atom takes the form <tablename>(arg1, ..., argn)
,
where each argi
is either a double-quoted Python string or a Python
number.
Basic rules The real power of Datalog is that it allows you to write recipes for constructing new tables out of existing tables, regardless which rows are in those existing tables.
To create a new table out of an existing table, we write Datalog rules. A rule is a simple if-then statement, where the if part is called the head and the then part is called the body. The head is always a single Datalog atom. The body is an AND of several possibly negated Datalog atoms. OR is accomplished by writing multiple rules with the same table in the head.
Suppose we want to create a new table has_ip
that is just a list of
the Neutron ports that have been assigned at least one IP address. We want
our table to work regardless what IDs and IPs appear in the neutron:port_ip
table so we use variables in place of strings/numbers. Variables have the
same meaning as in algebra: they are placeholders for any value.
(Syntactically, a variable is any symbol other than a number or a string.):
has_ip(x) :- neutron:port_ip(x, y)
This rule says that a port x belongs to the has_ip table if there exists some IP y such that row <x,y> belongs to the neutron:port table. Conceptually, this rule says to look at all of the ground atoms for the neutron:port_ip table, and for each one assign x to the port UUID and y to the IP. Then create a row in the has_ip table for x. This rule when applied to the neutron:port_ip table shown above would generate the following table:
has_ip("66dafde0-a49c-11e3-be40-425861b86ab6")
has_ip("73e31d4c-e89b-12d3-a456-426655440000")
Notice here that there are only 2 rows in has_ip despite there being 3 rows in neutron:port_ip. That happens because one of the ports in neutron:port_ip has been assigned 2 distinct IPs.
AND operator As a slightly more complex example, we could define a table same_ip that lists all the pairs of ports that are assigned the same IP.:
same_ip(port1, port2) :- neutron:port_ip(port1, ip), neutron:port_ip(port2, ip)
This rule says that the row <port1, port2> must be included in the same_ip table if there exists some ip where both <port1, ip> and <port2, ip> are rows in the neutron:port table (where notice that ip is the same in the two rows). Notice here the variable ip appears in two different places in the body, thereby requiring the value assigned to that variable be the same in both cases. This is called a join in the realm of relational databases and SQL.
NOT operator As another example, suppose we want a list of all the ports that have NOT been assigned any IP address. We can use the not operator to check if a row fails to belong to a table.
no_ip(port) :- neutron:port(port), not has_ip(port)
There are special restrictions that you must be aware of when using not. See the next section for details.
OR operator. Some examples require an OR, which in Datalog means writing multiple rules with the same table in the head. Imagine we have two tables representing group membership information from two different services: Keystone and Active Directory. We can create a new table group that says a person is a member of a group if she is a member of that group either according to Keystone or according to Active Directory. In Datalog we create this table by writing two rules.:
group(user, grp) :- ad:group(user, grp)
group(user, grp) :- keystone:group(user, grp)
These rules happen to have only one atom in each of their bodies, but there is no requirement for that.
2.2 Extended Datalog Features¶
In addition writing basic rules with and/or/not, the version of Datalog used by Congress includes the features described in this section.
Builtins. Often we want to write rules that are conditioned on things that are difficult or impossible to define within Datalog. For example, we might want to create a table that lists all of the virtual machines that have at least 100 GB of memory. To write that rule, we would need a way to check if the memory of a given machine is greater-than 100 or not. Basic arithmetic, string manipulation, etc. are operations that are built into Datalog, but they look as though they are just ordinary tables. Below the gt is a builtin table implementing greater-than:
plenty_of_memory(vm) :- nova:virtual_machine.memory(vm, mem), gt(mem, 100)
In a later section we include the list of available builtins.
Column references. Some tables have 5+ columns, and when tables have that many columns writing rules can be awkward. Typically when we write a rule, we only want 1 or 2 columns, but if there are 10 columns, then we end up needing to invent variable names to fill all the unneeded columns.
For example, Neutron’s ports table has 10 columns. If you want to create a table that includes just the port IDs (as we used above), you would write the following rule:
port(id) :-
neutron:ports(id, tenant_id, name, network_id, mac_address, admin_state_up,
status, device_owner, fixed_ips, security_groups)
To simplify such rules, we can write rules that reference only those columns that we care about by using the column’s name. Since the name of the first column of the neutron:ports table is “ID”, we can write the rule above as follows:
port(x) :- neutron:ports(id=x)
You can only use these column references for tables provided by cloud services (since Congress only knows the column names for the cloud service tables). Column references like these are translated automatically to the version without column-references, which is something you may notice from time to time.
Table hierarchy. The tables in the body of rules can either be the original cloud-service tables or tables that are defined by other rules (with some limitations, described in the next section). We can think of a Datalog policy as a hierarchy of tables, where each table is defined in terms of the tables at a lower level in the hierarchy. At the bottom of that hierarchy are the original cloud-service tables representing the state of the cloud.
Order irrelevance. One noteworthy feature of Datalog is that the order in which rules appear is irrelevant. The rows that belong to a table are the minimal ones required by the rules if we were to compute their contents starting with the cloud-service tables (whose contents are given to us) and working our way up the hierarchy of tables. For more details, search the web for the term stratified Datalog semantics.
Execute modal. To write a policy that tells Congress the conditions under which it should execute a certain action, we write rules that utilize the execute modal in the head of the rule.
For example, to dictate that Congress should ask Nova to pause() all of the servers whose state is ACTIVE, we would write the following policy statement:
execute[nova:servers.pause(x)] :- nova:servers(id=x, status="ACTIVE")
We discuss this modal operator in greater detail in Section 3.
Grammar. Here is the grammar for Datalog policies:
<policy> ::= <rule>*
<rule> ::= <head> COLONMINUS <literal> (COMMA <literal>)*
<head> ::= <atom>
<head> ::= EXECUTE[<atom>]
<literal> ::= <atom>
<literal> ::= NOT <atom>
<atom> ::= TABLENAME LPAREN <arg> (COMMA <arg>)* RPAREN
<arg> ::= <term>
<arg> ::= COLUMNNAME=<term>
<term> ::= INTEGER | FLOAT | STRING | VARIABLE
2.3 Datalog Syntax Restrictions¶
There are a number of syntactic restrictions on Datalog that are, for the most part, common sense.
Head Safety: every variable in the head of a rule must appear in the body.
Head Safety is natural because if a variable appears in the head of the rule but not the body, we have not given a prescription for which strings/numbers to use for that variable when adding rows to the table in the head.
Body Safety: every variable occurring in a negated atom or in the input of a built-in table must appear in a non-negated, non-builtin atom in the body.
Body Safety is important for ensuring that the sizes of our tables are always finite. There are always infinitely many rows that DO NOT belong to a table, and there are often infinitely many rows that DO belong to a builtin (like equal). Body safety ensures that the number of rows belonging to the table in the head is always finite.
No recursion: You are not allowed to define a table in terms of itself.
A classic example starts with a table that tells us which network nodes are directly adjacent to which other nodes (by a single network hop). Then you want to write a policy about which nodes are connected to which other nodes (by any number of hops). Expressing such a policy requires recursion, which is not allowed.
Modal safety: The execute modal may only appear in the heads of rules.
The Datalog language is we have is called a condition-action language, meaning that action-execution depends on conditions on the state of the cloud. But it is not an event-condition-action language, which would enable action-execution to depend on the conditions of the cloud plus the action that was just executed. An event-condition-action language would allow the execute modal to appear in the body of rules.
Schema consistency: Every time a rule references one of the cloud service tables, the rule must use the same (number of) columns that the cloud service provides for that table.
This restriction catches mistakes in rules that use the wrong number of columns or the wrong column names.
2.4 Datalog builtins¶
You can think of builtins as tables that are defined for you. All builtins are referenced in rules using the prefix builtin:. For example, to check if the value of x is less than the value of y, you write builtin:lt(x,y).
In previous releases, the builtin: prefix was unnecessary. You could reference builtin tables in their bare form, e.g. lt(x,y). As of Ocata, bare references to builtins are deprecated.
- **Bare builtin references are deprecated as of Ocata. They will be removed
- in the Q release.**
Here is a list of the currently supported builtins. A builtin that has N inputs means that the leftmost N columns are the inputs, and the remaining columns (if any) are the outputs. If a builtin has no outputs, it return boolean value True or False, starting with comparison.
| Comparison Builtin | Inputs | Description |
|---|---|---|
| lt(x, y) | 2 | True if x < y |
| lteq(x, y) | 2 | True if x <= y |
| equal(x, y) | 2 | True if x == y |
| gt(x, y) | 2 | True if x > y |
| gteq(x, y) | 2 | True if x >= y |
| max(x, y, z) | 2 | z = max(x, y) |
Next are the arithmetic builtins.
| Arithmetic Builtin | Inputs | Description |
|---|---|---|
| plus(x, y, z) | 2 | z = x + y |
| minus(x, y, z) | 2 | z = x - y |
| mul(x, y, z) | 2 | z = x * y |
| div(x, y, z) | 2 | z = x / y |
| float(x, y) | 1 | y = float(x) |
| int(x, y) | 1 | y = int(x) |
Then are the string builtins.
| String Builtin | Inputs | Description |
|---|---|---|
| concat(x, y, z) | 2 | z = concatenate(x, y) |
| len(x, y) | 1 | y = number of characters in x |
Next are the builtins for manipulating dates and times. These builtins are based on the Python DateTime object.
| Datetime Builtin | Inputs | Description |
|---|---|---|
| now(x) | 0 | The current date-time |
| unpack_date(x, year, month, day) | 1 | Extract year/month/day |
| unpack_time(x, hours, minutes, secs) | 1 | Extract hours/minutes/seconds |
| unpack_datetime(x, y, m, d, h, i, s) | 1 | Extract date and time |
| pack_time(hours, minutes, seconds, x) | 3 | Create date-time with date |
| pack_date(year, month, day, x) | 3 | Create date-time with time |
| pack_datetime(y, m, d, h, i, s, x) | 6 | Create date-time with date/time |
| extract_date(x, date) | 1 | Extract date obj from date-time |
| extract_time(x, time) | 1 | Extract time obj from date-time |
| datetime_to_seconds(x, secs) | 1 | secs from 1900 to date-time x |
| datetime_plus(x, y, z) | 2 | z = x + y |
| datetime_minus(x, y, z) | 2 | z = x - y |
| datetime_lt(x, y) | 2 | True if x is before y |
| datetime_lteq(x, y) | 2 | True if x is no later than y |
| datetime_gt(x, y) | 2 | True if x is later than y |
| datetime_gteq(x, y) | 2 | True if x is no earlier than y |
| datetime_equal(x, y) | 2 | True if x == y |
Last are the builtins for handling network addresses. These builtins are based on the Python netaddr package. Both IPv4 and IPv6 are supported. For more details see the netaddr documentation <http://pythonhosted.org/netaddr/>.
| Network Address Builtins | Inputs | Description |
|---|---|---|
| ips_equal(x, y) | 2 | True if IP x is equal to IP y |
| ips_lt(x, y) | 2 | True if IP x is less than IP y |
| ips_lteq(x, y) | 2 | True if IP x is less than or equal to IP y |
| ips_gt(x, y) | 2 | True if IP x is greater than IP y |
| ips_gteq(x, y) | 2 | True if IP x is greater than or equal to IP y |
| networks_equal(x, y) | 2 | True if network x and network y are equal |
| networks_overlap(x, y) | 2 | True if the same IP is in networks x and y |
| ip_in_network(x, y) | 2 | True if IP x belongs to network y |
3. Multiple Policies¶
One of the goals of Congress is for several different people in an organization to collaboratively define a single, overarching policy that governs a cloud. The example, the compute admin might some tables that are good building blocks for writing policy about compute. Similarly the network and storage admins might create tables that help define policy about networking and storage, respectively. Using those building blocks, the cloud administrator might then write policy about compute, storage, and networking.
To make it easier for several people to collaborate (or for a single person to write more modular policies) Congress allows you organize your Datalog statements using policy modules. Each policy module is simply a collection of Datalog statements. You create and delete policy modules using the API, and the you insert/delete Datalog statements into a particular policy module also using the API.
The rules you insert into one policy module can reference tables defined in other policy modules. To do that, you prefix the name of the table with the name of the policy and separate the policy module and table name with a colon.
For example, if the policy module compute has a table that lists all the servers that have not been properly secured insecure(server) and the policy module network has a table of all devices connected to the internet connected_to_internet, then as a cloud administrator, you might write a policy that says there is an error whenever a server is insecure and connected to the internet.
error(x) :- compute:insecure(x), network:connected_to_internet(x)
Notice that this is exactly the same syntax you use to reference tables exported directly by cloud services:
has_ip(x) :- neutron:port_ip(x, y)
In fact, the tables exported by cloud services are stored in a policy module with the same name as the service.
While the term policy module is accurate, we usually abbreviate it to policy, and say that Congress supports multiple policies. Note, however, that supporting multiple policies is not the same thing as supporting multi-tenancy. Currently, all of the policies are visible to everyone using the system, and everyone using the system has the same view of the tables the cloud services export. For true multi-tenancy, you would expect different tenants to have different sets of policies and potentially a different view of the data exported by cloud services.
See section API for details about creating, deleting, and populating policies.
3.1 Syntactic Restrictions for Multiple Policies¶
There are a couple of additional syntactic restrictions imposed when using multiple policies.
No recursion across policies. Just as there is no recursion permitted within a single policy, there is no recursion permitted across policies.
For example, the following is prohibited:
# Not permitted because of recursion
Module compute: p(x) :- storage:q(x)
Module storage: q(x) :- compute:p(x)
No policy name may be referenced in the head of a rule. A rule may not mention any policy in the head (unless the head uses the modal execute).
This restriction prohibits one policy from changing the tables defined within another policy. The following example is prohibited (in all policy modules, including ‘compute’):
# Not permitted because 'compute' is in the head
compute:p(x) :- q(x)
The following rule is permitted, because it utilizes execute in the head of the rule:
# Permitted because of execute[]
execute[nova:pause(x)] :- nova:servers(id=x, status="ACTIVE")
Congress will stop you from inserting rules that violate these restrictions.


| Total net profit | -46.36 | Gross profit | 0.69 | Gross loss | -47.05 |
| Profit factor | 0.01 | Expected payoff | -0.86 | ||
| Absolute drawdown | -46.36 | Maximal drawdown (%) | 45.05 (-3438.93%) | ||
| Total trades | 54 | Profit trades (% of total) | 2 (3.7%) | Loss trades (% of total) | 52 (96.3%) |
| Long positions (won %) | 44 (2.27%) | Short positions (won %) | 10 (10.0%) | ||
| Largest | profit trade | 0.54 | loss trade | -1.96 | |
| Average | profit trade | 0.35 | loss trade | -0.9 | |
| Minimum | profit trade | 0.15 | loss trade | -0.02 | |
| Maximum | take profit in pips | 784.5 | stop loss in pips | -253.3 | |
| Average | take profit in pips | 116.7 | stop loss in pips | -132.9 | |
| Minimum | take profit in pips | -68.8 | stop loss in pips | -71.4 | |
| Maximum | Reward-Risk | 6.8 | Duration in minutes | 59 | |
| Average | Reward-Risk | 1.0 | Duration in minutes | 6.1 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (0.54) | consecutive losses (loss in money) | 23.0 (-21.82) | |
| Average | consecutive wins | 1.0 | consecutive losses | 21.0 |
| Total net profit | -39.85 | Gross profit | 0.54 | Gross loss | -40.39 |
| Profit factor | 0.01 | Expected payoff | -0.91 | ||
| Absolute drawdown | -39.85 | Maximal drawdown (%) | 38.54 (-2941.98%) | ||
| Total trades | 44 | Profit trades (% of total) | 1 (2.27%) | Loss trades (% of total) | 43 (97.73%) |
| Largest | profit trade | 0.54 | loss trade | -1.96 | |
| Average | profit trade | 0.54 | loss trade | -0.94 | |
| Minimum | profit trade | 0.54 | loss trade | -0.02 | |
| Maximum | take profit in pips | 784.5 | stop loss in pips | -253.3 | |
| Average | take profit in pips | 113.8 | stop loss in pips | -132.3 | |
| Minimum | take profit in pips | -68.8 | stop loss in pips | -71.4 | |
| Maximum | Reward-Risk | 6.8 | Duration in minutes | 59.0 | |
| Average | Reward-Risk | 1.0 | Duration in minutes | 5.9 | |
| Minimum | Reward-Risk | 0.0 | Duration in minutes | 0.0 | |
| Maximum | consecutive wins (profit in money) | 1.0 (0.54) | consecutive losses (loss in money) | 24.0 (-21.53) | |
| Average | consecutive wins | 1.0 | consecutive losses | 19.0 |
| Total net profit | -6.51 | Gross profit | 0.15 | Gross loss | -6.66 |
| Profit factor | 0.02 | Expected payoff | -0.65 | ||
| Absolute drawdown | -6.66 | Maximal drawdown (%) | 5.67 (-572.73%) | ||
| Total trades | 10 | Profit trades (% of total) | 1 (10.0%) | Loss trades (% of total) | 9 (90.0%) |
| Largest | profit trade | 0.15 | loss trade | -1.19 | |
| Average | profit trade | 0.15 | loss trade | -0.74 | |
| Minimum | profit trade | 0.15 | loss trade | -0.29 | |
| Maximum | take profit in pips | 361.2 | stop loss in pips | -222.2 | |
| Average | take profit in pips | 129.6 | stop loss in pips | -135.3 | |
| Minimum | take profit in pips | -56.5 | stop loss in pips | -79.3 | |
| Maximum | Reward-Risk | 3.5 | Duration in minutes | 58.0 | |
| Average | Reward-Risk | 1.4 | Duration in minutes | 6.7 | |
| Minimum | Reward-Risk | Duration in minutes | 0.0 | ||
| Maximum | consecutive wins (profit in money) | 1.0 (0.15) | consecutive losses (loss in money) | 9.0 (-6.66) | |
| Average | consecutive wins | 1.0 | consecutive losses | 9.0 |


>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Rel
Voc
!:
Help
User
ODBC
Overview
The SQL Language
Installing ODBC
Connection & Statement Handles
Data Driver
Listing the Data Sources
ODBC error messages
Data Source Connection
Selecting & reading data
Updating a record
Creating a new file
SQL Statements
SQL Elements
SQL Reserved Words
>>
<<
Usr
Pri
JfC
LJ
Phr
Dic
Rel
Voc
!:
Help
User


--- layout: page title: "About Me" description: "Here's what I do." header-img: "img/about-bg.jpg" ---
I am a Software Developer at Housing.com
Sports fanatic!


Cupcake ipsum dolor sit. Amet I love croissant chocolate chocolate cake gummi bears chocolate. Chocolate jelly beans I love jelly. Sweet roll pastry sweet. Tart lemon drops pie. Jelly candy canes brownie pie macaroon pudding pie.
A floating box at the far end of the box has borders on two sides (using border-color
with four values), and border-radius
on the one visible corner. It also has a margin on two sides, with different units.
This paragraph is in a container that has padding on each side, using the two-value ("padding: 0 20%;") syntax. When rotated (top to bottom), the values should be flipped, so that the padding is on the top and bottom.
This paragraph is has a text-indent
. Sed efficitur vulputate arcu a facilisis. Sed et libero volutpat, facilisis ex vel, dapibus nisi. Maecenas bibendum, est non consequat consectetur, tellus erat elementum tortor, ut aliquet tellus enim sed ligula. Sed luctus congue purus sit amet condimentum. Suspendisse est ligula, accumsan laoreet porta vel, rutrum finibus dui.
padding
and margin
styles. Padding.
This span has both padding and margin after the text, using margin-[direction]/padding-[direction] properties. When flipping from ltr to rtl, padding-right becomes padding-left. For tb-lr, it becomes padding-bottom.
Lorem ipsum. This span has both padding and margin before the text, using the four-value syntax. (E.g. padding: 0 0 0 1em; )
Lorem ipsum. This span has both padding and margin on both sides of the text, using the three-value syntax. When rotated, this gets converted to four-value syntax.
A border and border radius.
This span has a red border after the text, with rounded corners.
This span has a thicker border closer to the preceding line, a thinner border to the inline-start direction, and repeating text at the border closer to the following line.
Using box-shadow
, text-shadow
, including inset positioning and overlapping shadows.
This text has a red shadow before the text slightly closer to the previous line, and a blue shadow after the text and slightly closer to the following line.
This box has an inset shadow, visible before the text.
transform: translate( 25%, 50% );
position: relative;
Cursor is shown when hovering over the text.
Background-images, including URL flips, and positioning.


Condr
Sign-up
Sign-in
About
Preferences
What are you allergic at?

Cinammon
Marzipan
Milk
Mustard
Olives
Tofu
Seafood
Nuts
I'm done!


--- layout: page title: "About" description: "This is what I do." header-img: "img/about-bg.jpg" ---
Hi Everyone,
I am Ajay Sharma. I work at awesome place called Wingify. I build things which live in Web. I love spending my time exploring the Awesomesauce. When I am not doing any of these, I would most probably be found placing small bets with my friends, having high decibel discussions.


Whitefoot the Woodmouse
by Thornton W. Burgess
"Whitefoot Climbs a Tree"
Additional Information
- Year Published: 1922
- Language: English
- Country of Origin: United States of America
- Source: Burgess T. W. (1922). Whitefoot the Woodmouse Boston: Little, Brown & Co..
-
Readability:
- Flesch–Kincaid Level: 4.5
- Word Count: 632
- Genre: Fantasy
- Keywords: 20th century literature, american literature, life lessons, nature
- ✎ Cite This
Downloads
I’d rather be frightened
With no cause for fear
Than fearful of nothing
When danger is near.
—Whitefoot.
Whitefoot kept on going and going. Every time he thought that he was so tired he must stop, he would think of Shadow the Weasel and then go on again. By and by he became so tired that not even the thought of Shadow the Weasel could make him go much farther. So he began to look about for a safe hiding-place in which to rest.
Now the home which he had left had been a snug little room beneath the roots of a certain old stump. There he had lived for a long time in the greatest comfort. Little tunnels led to his storehouses and up to the surface of the snow. It had been a splendid place and one in which he had felt perfectly safe until Shadow the Weasel had appeared. Had you seen him playing about there, you would have thought him one of the little people of the ground, like his cousin Danny Meadow Mouse.
But Whitefoot is quite as much at home in trees as on the ground. In fact, he is quite as much at home in trees as is Chatterer the Red Squirrel, and a lot more at home in trees than is Striped Chipmunk, although Striped Chipmunk belongs to the Squirrel family. So now that he must find a hiding-place, Whitefoot decided that he would feel much safer in a tree than on the ground.
“If only I can find a hollow tree,” whimpered Whitefoot. “I will feel ever so much safer in a tree than hiding in or near the ground in a strange place.”
So Whitefoot began to look for a dead tree. You see, he knew that there was more likely to be a hollow in a dead tree than in a living tree. By and by he came to a tall, dead tree. He knew it was a dead tree, because there was no bark on it. But, of course, he couldn’t tell whether or not that tree was hollow. I mean he couldn’t tell from the ground.
“Oh, dear!” he whimpered again. “Oh, dear! I suppose I will have to climb this, and I am so tired. It ought to be hollow. There ought to be splendid holes in it. It is just the kind of a tree that Drummer the Woodpecker likes to make his house in. I shall be terribly disappointed if I don’t find one of his houses somewhere in it, but I wish I hadn’t got to climb it to find out. Well, here goes.”
He looked anxiously this way. He looked anxiously that way. He looked anxiously the other way. In fact, he looked anxiously every way.
But he saw no one and nothing to be afraid of, and so he started up the tree.
He was half-way up when, glancing down, he saw a shadow moving across the snow. Once more Whitefoot’s heart seemed to jump right up in his throat. That shadow was the shadow of some one flying. There couldn’t be the least bit of doubt about it. Whitefoot flattened himself against the side of the tree and peeked around it. He was just in time to see a gray and black and white bird almost the size of Sammy Jay alight in the very next tree. He had come along near the ground and then risen sharply into the tree. His bill was black, and there was just a tiny hook on the end of it. Whitefoot knew who it was. It was Butcher the Shrike. Whitefoot shivered.


Vu Quoc Anh
Tisch University
Professor
I am a professor at Cornell University. My research focuses on
Books and teaching
N2 jp
C1 Enlish
HSK Chinese
Hobbies
Fee
Fi
Fo
Fum
Contact Information
Work Experience
Years
Work places
2017 - 2019
Chainos Solutions
2019 - 2020
Rikkei soft
Skills
Skills
🍚
Ios developments
🍚🍚🍚🍚
Web developments
🍚🍚🍚


{% extends 'layout.html' %} {% set pageHeading = "Sorry, there is a problem with the service" %} {% block pageTitle %} {{pageHeading}} | {{serviceName}} {% endblock %} {% block beforeContent %} {% endblock %} {% block content %}
If you have not submitted your details to NHS Test and Trace yet, you can use the ‘Financial support’ button in the app to try again.
If you have already submitted your details to NHS Test and Trace, you should receive an email and text message. If you have not received an email or a text message from NHS Test and Trace, you can call 119 for help.
You can search for help.


Company name is required.
Contactperson is required.
Contact email is required.
Contact telephone is required.
Contact information is required.
Address is required.
Invoice email is required.
Invoice telephone is required.
Organisation number is required.
Description is required.
Fun fact is required.
Facebook link is required.
Twitter link is required.
Youtube link is required.
Linkedin link is required.
Email link is required.
Web link is required.


{% if css %}
{% endif %}
Toggle navigation
http4s
Scaladoc
0.14 (snapshot)
0.13 (snapshot)
0.12 (release)
0.11 (release)
0.10 (release)
0.9 (release)
0.8 (release)
0.7 (release)
0.6 (release)
0.5 (release)
0.4 (release)
0.3 (release)
0.2 (release)
0.1 (release)
GitHub
Community
Community
Built with http4s
Demo
{{page.title}}
{{content}}


Web compliance needs to meet Section 508 of the Rehabilitation Act of 1973, as amended in 1998, most notably Subpart B 1194.22 Web-based intranet and Internet information and applications
Section 508 has 16 guidelines with no levels of compliance, either you are compliant or you are not.
Unhappy with the current state of Section 508, the W3C created a working group Web Accessibility Initiative (WAI) to create a new standard called Web Content Accessiblity Guidelines, more commonly refered to as WCAG.
WCAG has 12 Guidelines with 61 success criteria that can be tested against. WCAG also has 3 levels of compliance:


Maskless Merkel braves severe Delhi smog
NEW DELHI: German Chancellor Angela Merkel got a toxic welcome to India on Friday (Nov 1) as Prime Minister Narendra Modi welcomed her in air so polluted that authorities declared a public health emergency.
Ignoring medical advice to the choking megacity's 20 million inhabitants, the pair did not wear pollution masks as they inspected troops at the presidential palace in New Delhi.
Merkel, 65, sat for the national anthems, as during similar ceremonies following a series of shaking spells earlier this year.
She thanked Modi for the "very warm and gracious welcome" as the two sides signed a series of agreements in agriculture, maritime technology, "green urban mobility" and even yoga.
She and Modi also agreed to "deepen efforts to restart negotiations" on a free-trade deal between the European Union and India, with talks stuck since 2013.
The Indian pollution authority declared a health emergency after pollution levels entered the "severe plus" or "emergency" category late Thursday night - the first time since January - and ordered schools closed until Tuesday.
Especially hazardous levels of particulates smaller than 2.5 microns, so tiny they can enter the bloodstream, were 19 times the World Health Organization's safe maximum, data from the US embassy website showed.
The Environment Pollution Authority also banned all construction activity in New Delhi until Tuesday and prohibited use of firecrackers during the winter season. From Monday Delhi will introduce an odd/even car licence plate scheme to cut traffic.
India is home to 14 of the 15 most polluted cities in the world, according to the United Nations. One study says that smog kills a million Indians prematurely every year.
In Delhi, smoke from thousands of farms in the surrounding region burning crop stubble combine with other emissions into a deadly, off-white fog that even hides landmarks.
NO DEAD CRICKETERS
The sky-high levels of pollution - making Delhi the most polluted major city on the planet on Friday according to website AirVisual - threw into doubt a cricket match between India and Bangladesh scheduled for Sunday.
Bangladesh's coach Russell Domingo, bowling coach Daniel Vettori and several players wore masks during training on Friday.
Domingo said that although a few were suffering from "scratchy eyes" and sore throats, the match would go ahead.
"It is what it is," the South African told reporters. "Nobody has been sick or (is) dying or anything like that."
In December 2017 two visiting players from Sri Lanka vomited on the pitch because of the smog and play in the Test match was briefly suspended.
Sourav Ganguly, the new head of India's cricket board the BCCI, said on Thursday that scheduling of matches in northern India during winter needs to be a "little bit more practical".
But, he said, nothing could be done for this weekend.
"It's too late to do anything (for Sunday's match) ... So it's not possible to cancel things at the last minute," Ganguly told Indian media.
"I spoke to the groundsman. He says once the sun comes out, it will be fine."


Sometimes the data that you recieve from the server side it's a 100% match for the view. The easiest thing to do then is to modify it using directives.

var data = {
FirstName: "Jonas",
Address: {
City: "Falun",
PostalCode: "791 00"
}
};
// do not have to specify directives for everything.
var directives = {
FirstName: {
//second argument is the object at the current level.
text(value, dto) { return value + " [" + dto.Address.PostalCode + "]"; }
},
Address: {
City: {
//DTO = Address
html(value, dto) { return '<' + value + '>'; }
}
}
};
Griffin.Yo.G.render('MyView', data, directives);


| Jump to DART Documentation Main Index |
DART interface module for the forced_lorenz_96 model. The 16 public interfaces are standardized for all DART compliant models. These interfaces allow DART to advance the model, get the model state and metadata describing this state, find state variables that are close to a given location, and do spatial interpolation for model state variables.
The forced_lorenz_96 model implements the standard L96 equations except that the forcing term, F, is added to the state vector and is assigned an independent value at each gridpoint. The result is a model that is twice as big as the standard L96 model. The forcing can be allowed to vary in time or can be held fixed so that the model looks like the standard L96 but with a state vector that includes the constant forcing term. An option is also included to add random noise to the forcing terms as part of the time tendency computation which can help in assimilation performance. If the random noise option is turned off (see namelist) the time tendency of the forcing terms is 0.
| DART state vector composition | |
|---|---|
| state variables indices 1 - 40 |
forcing terms indices 41 - 80 |
| traditional Lorenz_96 state | "extended" state |
The DART tutorial Section 20 [pdf] explores parameter estimation using the forced_lorenz_96 model.
To become familiar with the model, try this quick experiment.
&perfect_model_obs_nml start_from_restart = .true., output_restart = .true., async = 0, restart_in_file_name = "perfect_ics", obs_seq_in_file_name = "obs_seq.in", obs_seq_out_file_name = "obs_seq.out", ... &filter_nml async = 0, ens_size = 80, start_from_restart = .true., output_restart = .true., obs_sequence_in_name = "obs_seq.out", obs_sequence_out_name = "obs_seq.final", restart_in_file_name = "filter_ics", restart_out_file_name = "filter_restart", num_output_state_members = 80, num_output_obs_members = 80, ... &model_nml num_state_vars = 40, forcing = 8.00, delta_t = 0.05, time_step_days = 0, time_step_seconds = 3600, reset_forcing = .false., random_forcing_amplitude = 0.10 /
Indices 20, 30, and 40 will be from the dynamical part of the lorenz_96 attractor, indices 60, 70, and 80 will be the corresponding Forcing values. Here are some images for just indices 20 and 60. Click on each image for a high-res version.
Repeat the experiment with reset_forcing = .true. when creating the true state and reset_forcing = .false. when assimilating. What happens?
types_mod time_manager_mod oned/location_mod utilities_mod random_seq_mod
A note about documentation style. Optional arguments are enclosed in brackets [like this].
integer :: get_model_size
Returns the length of the model state vector. Required.
| model_size | The length of the model state vector. |
real(r8), dimension(:), intent(inout) :: x type(time_type), intent(in) :: time
Advances this model for a single time step using a four-step Runga-Kutta. The time argument is not used.
| x | State vector of length model_size. |
| time | Specifies time of the initial model state. |
integer, intent(in) :: index_in type(location_type), intent(out) :: location integer, optional, intent(out) :: var_type
Returns metadata about a given element, indexed by index_in, in the model state vector. Returns location of the state variable at the given index. If present, var_type is set to 1 for the default variable type, and set to 2 if the forcing parameter is being assimilated.
| index_in | Index of state vector element about which information is requested. |
| location | The location of state variable element. |
| var_type | Returns the type of the indexed state variable as an optional argument. Valid types are 1 and 2. |
real(r8), dimension(:), intent(in) :: x type(location_type), intent(in) :: location integer, intent(in) :: itype real(r8), intent(out) :: obs_val integer, intent(out) :: istatus
Given model state, returns the value of variable itype interpolated to a given location by a method of the model's choosing. At present, this is the only support for forward operators that is required from the model_mod.
| x | A model state vector. |
| location | Location to which to interpolate. |
| itype | Integer indexing which type of state variable is to be interpolated. Can be ignored for low order models with a single type of variable. |
| obs_val | The interpolated value from the model. |
| istatus | Quality control information about the observation of the model state. |
type(time_type) :: get_model_time_step
Returns the time step (forecast length) of the model; The time step defaults to 1 hour but is settable by namelist.
| var | Smallest time step of model. |
Used for runtime initialization of model; reads namelist, initializes model parameters, etc. This is the first call made to the model by any DART-compliant assimilation routine.
A stub routine in this model.
type(time_type), intent(out) :: time
Returns the time at which the model will start if no input initial conditions are to be used. This is used to spin-up the model from rest. Sets time to 0 in this model.
| time | Initial model time. |
real(r8), dimension(:), intent(out) :: x
Returns default initial conditions for model; generally used for spinning up initial model states. Sets the entire state variable to the value of the forcing and then slightly perturbs the first element.
| x | Initial conditions for state vector. |
integer :: nc_write_model_atts integer, intent(in) :: ncFileID
Function to write model specific attributes to a netCDF file. At present, DART is using the NetCDF format to output diagnostic information. This is not a requirement, and models could choose to provide output in other formats. This function writes the metadata associated with the model to a NetCDF file opened to a file identified by ncFileID.
| ncFileID | Integer file descriptor to previously-opened netCDF file. |
| ierr | Returns a 0 for successful completion. |
integer :: nc_write_model_vars integer, intent(in) :: ncFileID real(r8), dimension(:), intent(in) :: statevec integer, intent(in) :: copyindex integer, intent(in) :: timeindex
Writes a copy of the state variables to a netCDF file. Multiple copies of the state for a given time are supported, allowing, for instance, a single file to include multiple ensemble estimates of the state.
| ncFileID | file descriptor to previously-opened netCDF file. |
| statevec | A model state vector. |
| copyindex | Integer index of copy to be written. |
| timeindex | The timestep counter for the given state. |
| ierr | Returns 0 for normal completion. |
real(r8), dimension(:), intent(in) :: state real(r8), dimension(:), intent(out) :: pert_state logical, intent(out) :: interf_provided
Given a model state, produces a perturbed model state. This particular model does not implement an interface for this and so returns .false. for interf_provided.
| state | State vector to be perturbed. |
| pert_state | Perturbed state vector: NOT returned. |
| interf_provided | Returned false; interface is not implemented. |
type(get_close_type), intent(inout) :: gc real(r8), intent(in) :: maxdist
Pass-through to the 1-D locations module. See get_close_maxdist_init() for the documentation of this subroutine.
type(get_close_type), intent(inout) :: gc integer, intent(in) :: num type(location_type), intent(in) :: obs(num)
Pass-through to the 1-D locations module. See get_close_obs_init() for the documentation of this subroutine.
type(get_close_type), intent(in) :: gc type(location_type), intent(in) :: base_obs_loc integer, intent(in) :: base_obs_kind type(location_type), intent(in) :: obs(:) integer, intent(in) :: obs_kind(:) integer, intent(out) :: num_close integer, intent(out) :: close_ind(:) real(r8), optional, intent(out) :: dist(:)
Pass-through to the 1-D locations module. See get_close_obs() for the documentation of this subroutine.
real(r8), dimension(:), intent(in) :: ens_mean
A NULL INTERFACE in this model.
| ens_mean | State vector containing the ensemble mean. |
This namelist is read from the file input.nml. Namelists start with an ampersand '&' and terminate with a slash '/'. Character strings that contain a '/' must be enclosed in quotes to prevent them from prematurely terminating the namelist. The values shown here are the default values.
&model_nml num_state_vars = 40, forcing = 8.00, delta_t = 0.05, time_step_days = 0, time_step_seconds = 3600, reset_forcing = .false., random_forcing_amplitude = 0.10 /
| Item | Type | Description |
|---|---|---|
| num_state_vars | integer | Number of variables in model. |
| forcing | real(r8) | Forcing, F, for model. |
| delta_t | real(r8) | Non-dimensional timestep. |
| time_step_days | real(r8) | Base model time step maps to this much real time. |
| time_step_seconds | real(r8) | Base model time step maps to this. |
| reset_forcing | logical | If true, all forcing values are held fixed at the value specified for the forcing namelist. |
| random_forcing_amplitude | real(r8) | Standard deviation of the gaussian noise with zero mean that is added to each forcing value's time step. |
| filename | purpose |
|---|---|
| input.nml | to read the model_mod namelist |
| true_state.nc | the time-history of the single model state used to generate the synthetic observations |
| preassim.nc | the time-history of the model state before assimilation |
| analysis.nc | the time-history of the model state after assimilation |
| advance_model.csh | shell script to advance the model as a standalone executable. Each advance will then read the model's namelist. |
| dart_log.out | the run-time diagnostic output |
| dart_log.nml | the record of all the namelists actually USED - contains the default values |
| Routine | Message | Comment |
|---|---|---|
| nc_write_model_atts nc_write_model_vars |
Various netCDF-f90 interface error messages | From one of the netCDF calls in the named routine |
none at this time
none at this time
N/A
DART software - Copyright UCAR. This open source software is provided by UCAR, "as is", without charge, subject to all terms of use at http://www.image.ucar.edu/DAReS/DART/DART_download


|
file$ - name of image file with animation frames laid out in left-right, top-to-bottom order
flags (optional) - texture flag: 1: Color (default) 2: Alpha 4: Masked 8: Mipmapped 16: Clamp U 32: Clamp V 64: Spherical reflection map 128: Cubic environment map 256: Store texture in vram 512: Force the use of high color textures 1024: Use point sampling instead of linear sampling frame_width - width of each animation frame frame_height - height of each animation frame first_frame - the first frame to be used as an animation frame frame_count - the amount of frames to be used |
|
Loads an animated texture from an image file and returns the texture's handle.
The flags parameter allows you to apply certain effects to the texture. Flags can be added to combine two or more effects, e.g. 3 (1+2) = texture with colour and alpha maps. See CreateTexture for more detailed descriptions of the texture flags. The frame_width, frame_height, first_frame and frame_count parameters determine how Blitz will separate the image file into individual animation frames. See also: CreateTexture, LoadTexture. |
|
; LoadAnimTexture Example
; ----------------------- Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 cube=CreateCube() PositionEntity cube,0,0,5 ; Load anim texture anim_tex=LoadAnimTexture( "media/boomstrip.bmp",49,64,64,0,39 ) While Not KeyDown( 1 ) ; Cycle through anim frame values. 100 represents delay, 39 represents no. of anim frames frame=MilliSecs()/100 Mod 39 ; Texture cube with anim texture frame EntityTexture cube,anim_tex,frame pitch#=0 yaw#=0 roll#=0 If KeyDown( 208 )=True Then pitch#=-1 If KeyDown( 200 )=True Then pitch#=1 If KeyDown( 203 )=True Then yaw#=-1 If KeyDown( 205 )=True Then yaw#=1 If KeyDown( 45 )=True Then roll#=-1 If KeyDown( 44 )=True Then roll#=1 TurnEntity cube,pitch#,yaw#,roll# RenderWorld Flip Wend End |


Sorry, but you need a browser, which supports frames.
(Version 3 or higher.)
This is my page on Electronics, FPGAs, Funny Pictures, Astronomy, Hacking and Cryptocurrency.
FPGA - Details on my FPGA, projects and Ideas
Electronics - Electronic projects, Hack Jobs and other Electronics type information and ideas
Cryptocoins - My page on Cryptocurrency, Bitcoins, Litecoins, Feathercoins and more. I still believe the XPM (Primecoin) will be a dominant player in the Cryptocurrency world. Also take a look at my link to Vircurex site. If you use the referal, you will get discounted trading.
Funny Pictures - This is a page with a collection of Funny Pics and assorted that I find. They can also be found on my Facebook page.
Astronomy - Just some pictures I took a few years ago with a mate. The moon, Jupiter and Saturn, using a primative B&W CCD Camera module which cost me $100 back in the mid 1990s.
Wolf Technologies Page is my personal electronics page.


I am a full stack web developer that is fueled by a high-level of enthusiasm, curiosity, easy to adapt to changes, teachable and make a great team member.
I am always ready to think outside the box in my projects. I love making scalable, user-friendly, creative and perfomant websites and apps.
Here are some of the Technologies I enjoy working with:
HTML 5
CSS 3
JavaScript ES6
React
JQuery
Bootstrap
Nodejs(Express)
MongoDB(Mongoose)
Github & Terminal


This website presents the predictions and models described in:
Cunningham, Koytiger, Sorger, AlQuraishi. "Biophysical prediction of protein-peptide interactions and signaling networks using machine learning." Nature Methods (2020). doi:
Data and code are available in a number of ways. Code is available via Github for the model. A separate repository stores the code associated with the figures from the paper. Complete data are available via figshare. Targeted downloads (i.e. queries for one / a few proteins and their neighborhood) are available via this website. For systematic access, we request that you use figshare.
The model, analysis, and website were developed / implemented in the AlQuraishi and Sorger Laboratories within the Laboratory of Systems Pharmacology at Harvard Medical School. Questions, comments, concerns should be submitted via the GitHub repositories: github.com/aqlaboratory/hsm-web
Funding: U54-CA225088 (NIH), P50-GM107618 (NIH) and W911NF-14-1-0397 (DARPA / DOD)
© 2018, Laboratory of Systems Pharmacology. All rights reserved.


Changing the Date of Git Commits
Nov 15, 2016Have you ever looked at peoples Github contribution timelines and seen a word or some ASCII art. This is done by creating a repo, then manipulating the dates of commits, to create the desired design.
This blog post is not about creating funky pieces of art in your Github commit history timeline. But instead, shows you how to change the date of a commit using Git.
When you make a git commit you can actually set the date of the commit to anything you want. Lets get started.
First, you have to set two environment variables - GIT_AUTHOR_DATE and GIT_COMMITTER_DATE, like so:
$ export GIT_AUTHOR_DATE="Wed Jan 10 14:00 2099 +0100"
$ export GIT_COMMITTER_DATE="Wed Jan 10 14:00 2099 +0100"
Create a git repo:
$ mkdir test
$ cd test
$ git init
$ echo "hello world" >> hello.txt
$ git add hello.txt
Now lets commit our changes:
$ git commit -m "initial commit"
$ git log
commit 80b2d1f499d6ae455a4f87f68e107b275abfefe8
Author: Philip J. Fry<EMAIL_ADDRESS>Date: Wed Jan 10 14:00:00 2099 +0100
initial commit
You can see the date of our commit has changed, rather the being the current date/time, it is set to day in the year 2099.
If you want to change the date of a commit in the past, I recommend reading this blog post.


This example is based on Issue 813.
It relies on the treeNodeTemplate
to customize the display of each node.
The example uses simple buttons to handle basic functions for creating, copying and deleting nodes.
The example does not show a edit function because of the endless possibilities on how to implement this.
One option could be to show an input field instead of the span
with the name of the node.
This could be triggered via button, double click or how your app enters edit mode.


| 382 | (A) | that thay hade wonnen with swerde ałłe the werlde Riche |
| 386 | (C) | That þey witħ werre wonne ałł þe worlde ryche |
| 387 | (D) | þat þei had wiþ werre al þe world riche |
| (E) | ---- no text ---- | |
| (Ex) | ---- no text ---- | |
| 396 | (L) | þat þey hadde wonnen with swerd al þe world riche |
| 370 | (P) | þat þai haue wonnon with swerde ałł þe world riche |
| 380 | (U) | That thei wonne witħ werre / al the world riche |
| (V) | ---- no text ---- |


Back in 1996 when I was but 16 years old I found an instructional manual as such on how to efficiently extract codeine from OTC Tylenol that was easily accessible to me. Being in Canada (Ontario to be exact) I can go to any corner pharmacy and they have very cheap bottles of the stuff that I can buy with absolutely no questions asked, this availability has proven to be a bit of an issue at times, but we'll get into that later. I generally get 200 pills for about 8 dollars Canadian, that would be something like 6.50 American. That's 1600 mg of codeine for less than 10 dollars, an amazing deal if you ask me.
Regardless, I started experimenting with codeine by taking 3 or 4 Tylenol 3's, I found that I ended up with nasty side-effects from taking such large doses of acetaminophen. One time in particular I remember taking 5 capsules and being called in immediately after to work, I managed to get about 2 hours of work done and ended up leaving with extreme nausea and stomach cramps. From this point I swore off high doses of Tylenol and began to extract my product, at first it was quite a bother heating up water and cooling it with parents constantly hanging around but I've learned some very useful tricks over the years that I'll be happy to share.
First, I discovered that ASA or Aspirin is FAR superior to APAP or Tylenol. The dissolved product is much more of a 'sand' or 'salt' consistency and can be strained out with almost no problems. The Acetaminophen always ended up taking quite some time to dissolve and would be almost powder consistency. This caused it to plug up the pores as such in the filter I was using and would elongate filtration time to a painful 45 minutes or more. Any attempt to squeeze the liquid through invariably ended up with large amounts of sediment in the finished product which would then need to be filtered again and even THEN the finished product would be milk-white. ASA dissolves virtually right off the bat and with only a slight amount of squeezing, filtration can take as little as 5 minutes.
I also never use hot water any longer for a first time through. My general process is to take 200 pills of aspirin, put them in COLD water, stir until completely dissolved and filter right away. They virtually fall apart on contact with the water so don't worry about that, if you use Tylenol for this it will take a VERY long time for the pills to dissolve. I find that placing them in a plastic bottle and shaking vigorously aids in their dissolving. Once I've filtered the 200 pills I KEEP the finished product in a container and then use that in mix with boiling water to get any left-over codeine in the mush. I find that I can get 2 or 3 solid doses using this method from the finished product. The dose from a hot water extraction of the capsules is noticeably higher than that of a cold water extraction, so I count in the extra codeine when judging my doses.
I find that oral use of the drug is a bit tedious and can lead to a large amount of nausea and stomach pains. I've seen many people throw up from the nausea opiates can cause. I find that rectal administration is the preferred route. There's 2 major ways I generally go about rectal dosing. One is much easier and quicker, and one is much more difficult to do, but becomes fairly easy with practice. On one hand, if I'm just wanting a quick dose right away, I have a marked turkey baster that does the job perfectly...my average dose is 400 mg (note, this is a high dose for most people and I would recommend no more than about 90-120 for a first time user) and so I can just use the extract and the ml gauge on the baster to measure accurate doses in ml.
The other method involved infusing the codeine liquid with something in order to make a sort of suppository.
I also find that smoking a joint or eating a marijuana cookie right when dosing increases the effects to make for an extremely pleasant buzz. The codeine takes away much of the paranoia/anxiety that marijuana can cause and the marijuana adds a much stronger psychological element to the high that codeine alone seems to lack.
I've found myself slipping into some pretty heavy use because of codeine's very easy access and pleasant but mild high. I can use, on my heavy days, an entire 200 bottle and average about 800 mg on an average day. the addiction from this drug is very subtle and easy to slip into, I've used other addictive drugs in my life and was always able to catch a glimpse of myself slipping into a routine of use. With this drug I was using casually, turned around one days and suddenly realized I'd used every day for 2 weeks. I do plan on cutting down, and while I'm not overly concerned, it's something that I've resolved to do over the course of the next few months.
Physical/psychological side-effects to addiction seem to be almost nil, the caffeine in the pills can cause some insomnia, but that seems to be almost it. One positive aspect of this drug is that, thanks to its legal status in my country, there's no threat of adulterants. I always know exactly what I'm getting and how much I'm taking and therefore fear of overdose/serious physical problems are very much minimum.
Experience Reports are the writings and opinions of the individual authors who submit them.
Some of the activities described are dangerous and/or illegal and none are recommended by Erowid.


Shop worker: 'I am verbally abused on a daily basis'
Jackie McKenzie, 56, has worked at a supermarket petrol station in Bathgate, Scotland for the last 20 years.
During that time, the amount of abuse she has faced while doing her job has been rising.
"I've been verbally abused on a daily basis," she said. "It's getting a bit out of hand to be honest."
She is not alone, according to a new survey, which has found that retail staff are abused, threatened or assaulted on average 21 times a year.
A survey of over 4,000 retail staff by shop workers' union Usdaw, found that around two-thirds have experienced verbal abuse, while 41% were threatened by a customer and nearly 5% were assaulted.
The trade union has been campaigning to stop abusive behaviour towards retail staff for a number of years and in June called on the government to tackle the problem.
"People think that just because we work behind a till there's no reason to respect us," said Michelle Whitehead, 46, a convenience store worker in Wolverhampton.
"It's terrible to say but you get used to being threatened. When someone comes and shouts at you it does affect you. Sometimes you have to walk away from the counter and count till 10 so you don't burst into tears."
Violent attacks
Ms Whitehead, who has been a retail worker for almost three decades, says that incidents used to occur once in a while but now she receives abuse from customers on a weekly basis.
She said she often encounters difficulties when dealing with young people who are underage but seeking to purchase alcohol or cigarettes.
She has also been spat at for refusing to hand over parcels from the post office counter without proof of ID.
Although neither Ms Whitehead or Ms McKenzie have been assaulted, they have witnessed violent attacks.
Ms McKenzie said one night, while managing the shop on her own, she witnessed a young man run into the convenience store begging for help and a minute later, another boy had run in and started beating him up.
"I shouted to him to stop from behind the counter and pressed the panic button, and the police did come. But by that time the guy had a broken arm and a broken jaw, and the shop was trashed," she said.
The two workers are campaigning for retailers and the government to make changes so retail staff can feel safe while they are at work.
They want signs up in stores telling customers to respect staff, more police on patrol and for retailers to impose a life-time ban on customers who persistently abuse shop workers.
Abusive customers should also have to face criminal charges, they said.
"If that's the only corner shop you can go to, it might make you think if you could have a life-time ban," said Ms Whitehead.


Select a date
Please choose a date
Choose your times (1 hour slots)
Please choose a time slot
Choose a booking type
Please choose a booking type
Add {{$ctrl.contactLabel()}}
Please add at least one user
Do not add more than one user


SELECT VALUE AND
PUSH THE
ADD
OR
SUBTRACT
ICONS.
+ 1
+ 2
+ 5
+ 10
+ 50
+ 100
- 1
- 2
- 5
- 10
- 50
- 100
RESET VALUE
0
Your browser does not support the audio element.
Your browser does not support the audio element.
Your browser does not support the audio element.
Your browser does not support the audio element.


Get Crs Hub Log In PNG. Pages related to hub crs login are also listed. *prod if you are having a problem logging into the crs intranet:
Rgukt information hub is an university management system to facilitate the academic activities in rgukt basar campus. Sign in or register for your personal or business tax account, self assessment, corporation tax, paye for employers, vat and other services. These documents were prepared by the congressional research service (crs).
Log file string deleted after close failure.
I see a lot of i can not get this vlan stuff working, the switch is leaking traffic all over like a hub, or not working at all. This will allow a signed in user to log out and also display the username. I see a lot of i can not get this vlan stuff working, the switch is leaking traffic all over like a hub, or not working at all. If it is a bound crs, it gets the axis list from the source crs.


CSPICE_CIDFRM retrieves the ID code and name of the preferred
frame associated with a given body ID.
Given:
cent NAIF ID of a body for which a preferred reference frame
exists.
[1,n] = size(cent); int32 = class(cent)
the call:
[ frcode, frname, found] = cspice_cidfrm(cent)
returns:
frcode the SPICE frame code(s) associated with 'cent'.
[1,n] = size(frcode); int32 = class(frcode)
frname the name(s) corresponding to 'frcode'.
[n,m] = size(frname); char = class(frname)
found the flag(s) indicating if the appropriate frame ID-code and
frame name can be determined from 'cent'.
[1,n] = size(found); logical = class(found)
'frcode', 'frname', and 'found' return with the same
vectorization measure (N) as 'cent'.
Any numerical results shown for this example may differ between
platforms as the results depend on the SPICE kernels used as input
and the machine specific arithmetic implementation.
%
% Retrieve frame information for body ID 501.
%
disp('Scalar' )
bodies = 501;
[ frcode, frname, found ] = cspice_cidfrm( bodies );
if ( found )
fprintf( '%8d %8d %s\n', bodies, frcode, frname )
end
%
% Retrieve frame information for a vector of body IDs.
%
disp('Vector' )
bodies = [ 0, 301, 401, -501 ];
[ frcode, frname, found ] = cspice_cidfrm( bodies );
for i=1:numel( bodies)
if ( found(i) )
fprintf( '%8d %8d %s\n', bodies(i), frcode(i), frname(i,:) )
else
fprintf( 'No frame associated with ID %d\n', bodies(i) )
end
end
MATLAB outputs:
Scalar
501 10023 IAU_IO
Vector
0 15 DE-202
301 10020 IAU_MOON
401 10021 IAU_PHOBOS
No frame associated with ID -501
This routine allows the user to determine the frame that should
be associated with a particular object. For example, if you
need the frame name and ID associated with Io, you can call
cspice_cidfrm to return these values.
The preferred frame to use with an object is specified via one
of the kernel pool variables:
OBJECT_<cent>_FRAME
where <cent> is the NAIF ID or name of the object.
For those objects that have "built-in" frame names this
routine returns the corresponding "IAU" frame and frame ID code.
For important details concerning this module's function, please refer to
the CSPICE routine cidfrm_c.
MICE.REQ
FRAMES.REQ
-Mice Version 1.0.0, 11-NOV-2013, EDW (JPL), SCK (JPL)
Fetch reference frame attributes
|


The following is a randomly generated data. All ficticous and
mathematically generated with random numbers. The randomness of
which/whom is questionable by the fact it is generated on a computer
with a set and specific clock wave. A true random number would be
sourced from an analogue basis like a crystal. External random number
generators are available for highly specific and scientific purposes.