|
|
Defines | |
| #define | PANTHEIOS_BE_INIT_RC_NO_BACKENDS_SPECIFIED (-10001) |
| Specifies that the operation failed because no backends were specified. | |
| #define | PANTHEIOS_BE_INIT_RC_ALL_BACKEND_INITS_FAILED (-10002) |
| Specifies that the operation failed because all backends failed to initialise. | |
| #define | PANTHEIOS_BE_INIT_RC_INVALID_PROCESSID (-10003) |
| Specifies that the operation failed due to specification of an invalid process identifier. | |
| #define | PANTHEIOS_BE_INIT_RC_API_MUTEX_INIT_FAILED (-10004) |
| Specifies that the operation failed because mutex initialisation failed. | |
| #define | PANTHEIOS_BE_INIT_RC_INTENDED_FAILURE (-10005) |
| Specifies that the operation failed deliberately, according to its design. | |
| #define | PANTHEIOS_BE_INIT_RC_INIT_PARAM_REQUIRED (-10006) |
| Specifies that the operation failed because a required parameter was not supplied. | |
| #define | PANTHEIOS_BE_INIT_RC_INVALID_ARGUMENT (-10007) |
| Specifies that the operation failed due to an invalid argument being specified. | |
| #define | PANTHEIOS_BE_INIT_RC_ARGUMENT_TOO_LONG (-10008) |
| Specifies that the operation failed due to an argument being too long. | |
| #define | PANTHEIOS_BE_INIT_RC_ARGUMENT_OUT_OF_RANGE (-10009) |
| Specifies that the operation failed due to an argument being out of range. | |
| #define | PANTHEIOS_BE_INIT_RC_INIT_CONFIG_REQUIRED (-10010) |
| Specifies that the operation failed because required initialisation configuration information was missing or not supplied. | |
| #define | PANTHEIOS_BE_INIT_RC_PERMISSION_DENIED (-10011) |
| Specifies that the operation failed because permission to access a required resource (such as a file) was denied. | |
| #define | PANTHEIOS_BE_INIT_RC_RESOURCE_BUSY (-10012) |
| Specifies that the operation failed because a required resource (such as a file) was already in use. | |
| #define | PANTHEIOS_BE_INIT_RC_FUTURE_VERSION_REQUESTED (-10013) |
| Specifies that the operation failed because a version was requested of a later version of Pantheios than was used to create the back-end. | |
| #define | PANTHEIOS_BE_INIT_RC_OLD_VERSION_NOT_SUPPORTED (-10014) |
| Specifies that the operation failed because a version was requested of a previous version of Pantheios that is no longer supported by the back-end. | |
| #define | PANTHEIOS_BE_LOGENTRY_FAILED (-10015) |
Specifies that the underlying call to pantheios_be_logEntry() failed; the back-end may have used bail-out logging to record the problem. |
| #define PANTHEIOS_BE_INIT_RC_ALL_BACKEND_INITS_FAILED (-10002) |
Specifies that the operation failed because all backends failed to initialise.
| #define PANTHEIOS_BE_INIT_RC_API_MUTEX_INIT_FAILED (-10004) |
Specifies that the operation failed because mutex initialisation failed.
| #define PANTHEIOS_BE_INIT_RC_ARGUMENT_OUT_OF_RANGE (-10009) |
Specifies that the operation failed due to an argument being out of range.
| #define PANTHEIOS_BE_INIT_RC_ARGUMENT_TOO_LONG (-10008) |
Specifies that the operation failed due to an argument being too long.
| #define PANTHEIOS_BE_INIT_RC_FUTURE_VERSION_REQUESTED (-10013) |
Specifies that the operation failed because a version was requested of a later version of Pantheios than was used to create the back-end.
| #define PANTHEIOS_BE_INIT_RC_INIT_CONFIG_REQUIRED (-10010) |
Specifies that the operation failed because required initialisation configuration information was missing or not supplied.
| #define PANTHEIOS_BE_INIT_RC_INIT_PARAM_REQUIRED (-10006) |
Specifies that the operation failed because a required parameter was not supplied.
| #define PANTHEIOS_BE_INIT_RC_INTENDED_FAILURE (-10005) |
Specifies that the operation failed deliberately, according to its design.
| #define PANTHEIOS_BE_INIT_RC_INVALID_ARGUMENT (-10007) |
Specifies that the operation failed due to an invalid argument being specified.
| #define PANTHEIOS_BE_INIT_RC_INVALID_PROCESSID (-10003) |
Specifies that the operation failed due to specification of an invalid process identifier.
| #define PANTHEIOS_BE_INIT_RC_NO_BACKENDS_SPECIFIED (-10001) |
Specifies that the operation failed because no backends were specified.
| #define PANTHEIOS_BE_INIT_RC_OLD_VERSION_NOT_SUPPORTED (-10014) |
Specifies that the operation failed because a version was requested of a previous version of Pantheios that is no longer supported by the back-end.
| #define PANTHEIOS_BE_INIT_RC_PERMISSION_DENIED (-10011) |
Specifies that the operation failed because permission to access a required resource (such as a file) was denied.
| #define PANTHEIOS_BE_INIT_RC_RESOURCE_BUSY (-10012) |
Specifies that the operation failed because a required resource (such as a file) was already in use.
| #define PANTHEIOS_BE_LOGENTRY_FAILED (-10015) |
Specifies that the underlying call to pantheios_be_logEntry()
failed; the back-end may have used bail-out logging to record the problem.
|
|
|
| pantheios Library documentation © Matthew Wilson & Synesis Software, 2006-2011 |


PROFILE
account_circle
Username
accessibility
Full Name
personal_video
Position
phone
Phone
perm_identity
Skype ID
email
Email
UPDATE
Supported by
iMMAP


Sexagenarian pleads guilty to stealing student’s laptop, phone
A 63-year-old tailor, Gbenga Oyeneye, on Monday, at a Yaba Chief Magistrates’ Court in Lagos, pleaded guilty to stealing a student’s bag containing his laptop, phone and ATM card, all valued at N140,000.
Following the sexagenarian’s guilty plea, the Chief Magistrate, Mrs Oluwatoyin Oghere, adjourned to Nov. 27, the review of the facts of the case and sentencing.
The News Agency of Nigeria (NAN) reports that Oyeneye, who resides at Shomolu, Lagos, was arraigned on a three-count charge of conspiracy, stealing and breach of peace.
Earlier, Prosecutor, Sgt. Modupe Olaluwoye, told the court that the defendant committed the offences on Oct. 31, at Yaba College of Technology junction, Yaba.
According to her, the defendant, and two of his accomplices who are still at large, snatched the Complainant, Mr Damilola Makinde’s laptop bag from him.
READ ALSO: Sexagenarian docked over alleged theft of bread, toothpaste
She alleged that the defendant had distracted Makinde by asking for directions, while his accomplices had cut the hand of the bag from behind.
Olaluwoye listed the stolen items to include, a Dell laptop valued at N80,000; an Infinix hot 4 phone valued at N60,000; and a Sterling Bank ATM card.
She said that the offences contravened Sections 411, 287 and 168 of the Criminal Laws of Lagos State 2015 (revised).
NAN reports that offence of conspiracy attracts a two-year jail term, while stealing attracts a three-year jail term.
(NAN)


Garden Minder Dashboard
Lets grow some plants!
Sensor Graph
Water Commands
Water
Stop
Settings
Moisture Calibration:
More
Less
Water Delay:
1 Day
1 Week
1 Month
Server address:
Update


i3lock
Simple screen locker built for the i3 window manager.
More information: home page
- Lock the screen showing a white background:
i3lock
- Lock the screen with a simple color background (rrggbb format):
i3lock --color 0000ff
- Lock the screen to a PNG background:
i3lock --image path/to/file.png
- Lock the screen and disable the unlock indicator (removes feedback on keypress):
i3lock --no-unlock-indicator
- Lock the screen and don't hide the mouse pointer:
i3lock --pointer default
- Lock the screen to a PNG background tiled over all monitors:
i3lock --image path/to/file.png --tiling
- Lock the screen and show the number of failed login attempts:
i3lock --show-failed-attempts


Commit {{ getCommit(buildHistory) }}
Branch {{buildHistory.branchHash}}
Status: {{buildHistory.buildStatus | buildStatus}}
Duration {{buildHistory.duration | timespan}}
Finished {{buildHistory.buildAt | dateAgo}}


APOCALYPSE NOW REDUX (2001) / ****
Directed by Francis Ford Coppola. Screenplay by John Milius and Coppola, based on the novel "Heart Of Darkness" by Joseph Conrad, with narration by Michael Herr. Starring Martin Sheen, Marlon Brando, Robert Duvall. Running time: 202 minutes. Rated R for offensive language throughout by the MFCB. Reviewed on October 8th, 2001.
By SHANNON PATRICK SULLIVAN
Synopsis: In the midst of the Vietnam War, Captain Willard (Sheen) is ordered to travel upriver into Cambodia in search of Colonel Walter Kurtz (Brando), who went AWOL and fled into the jungle. En route, Willard is witness to many of the horrors the war has wrought upon the countryside, and upon the men and women brought in to wage it.
Review: Few movies are so shattering as "Apocalypse Now". It tells of a journey up a river, but in reality it is a journey into the very heart of madness. Each stop is more evidence of this: a colonel obsessed with surfing, an attack on the boat not with gunfire but with arrows and spears, a final American outpost manned by soldiers long since descended into insanity. And it all ends with Kurtz, raising a kingdom of the mad in the midst of the jungle, who does not just recognise the insanity of war, is not just a victim of it, but who thrives upon it. Sheen and Brando are outstanding. One plays a steely professional, the other a philosophical monomaniac, but both are crazy in their own way. "Apocalypse Now Redux" extends the lengthy film by about forty minutes, if anything accentuating the dreamlike atmosphere of the narrative. Some new scenes work, like a delirious second encounter with the Playboy bunnies and extra commentary by Kurtz. But the longest new segment, set at a French plantation house, jars us out of the rhythm of the story; even the hypnotic incidental music becomes trite and inappropriate. When I first saw "Apocalypse Now", I was unsure whether I truly liked it, but my appreciation for Coppola's triumph has only increased in the intervening years. "Redux" is not a stronger film, but it is a no less effective and mesmerising cinematic experience.
Copyright © 2001 Shannon Patrick Sullivan. Archived at The Popcorn Gallery, http://www.physics.mun.ca/~sps/movies.html
| Shannon Patrick Sullivan |<EMAIL_ADDRESS>| +---------------------------------+---------------------------------+ / Doctor Who: A Brief History of Time (Travel) go.to/drwho-history \ \__ We are all in the gutter but some of us are looking at the stars __/
========== X-RAMR-ID: 29745 X-Language: en X-RT-ReviewID: 253575 X-RT-TitleID: 1109883 X-RT-SourceID: 886 X-RT-AuthorID: 1699 X-RT-RatingText: 4/4
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: default title: 團隊介紹 permalink: /crew/ image: lion.jpg modal: crew --- {% include top-section.html %} {% include crew.html %}


So I ran into a minor (pretty major) issue today. I had originally planned to use GitHub sites to host my website. Jekyll, the framework I’m using to generate this site is developed by the founder of Github, and as a result, GitHub supports Jekyll with some additional features. By using GitHub sites, all one has to do to deploy their Jekyll website is add a repository with their Jekyll code, and enable GitHub sites. GitHub takes care of building and deploying your site, which means you can even edit your site online through GitHub’s text editor without downloading and pushing your code. However, since GitHub is building and deploying your site, you have to make sure all the plugins you are using are supported by GitHub’s build platform.
This is what’s causing my hosting issues.
I did a test launch on GitHub sites and I noticed some of the HTML generate was different from what I had locally. I realized that this was because I’m using the Jekyll-paginate-v2 plugin, not the original Jekyll-paginate plugin. Unfortunately, I actually need the paginate-v2 plugin, since the original plugin is very restrictive and only allows you to have one paginate page whereas I would like a paginate page for each project I’m working on.
I think I have two options going forward.
- I can try to see if I can still use GitHub sites to host my site, and just not take advantage of their auto-build and deploy feature.
- I can use a different hosting service.
I’m not sure what I’ll do yet, but I’m going to start looking into some other hosting services and compare them to Github’s.
Oh yeah, I also need a domain name. austinzhang.com is taken, but austinzhang.io and austinmzhang.com are open. I still need to decide.


In tenth grade I got admitted into Monroe Technology Center for the Health and Medical Sciences program. This program is located at Inova Cornwall hospital where I went every other day for 7 hours. While a majority of the people are juniors when accepted, I was accepted as a sophomore.
I started off as a bioinformatics major and quickly learned that this would not be the best major to help me get to my career goal. I then switched to a BIS degree at NJIT. Finally I am a Health Management degree at SLU. I am an active member of my college community. I am on the executive board as a public relations officer for minds matter which is a mental health awareness awareness club on campus. I am also in a string quartet called all strings attached. I am in the society of musical arts as well. I take part in a religious organization on campus known as the BAPS campus fellowship. I have a 3.5 GPA and strive to keep my grades as high as possible. I had an internship with the SRL group as a data analyst and miner. I then started doing little freelance graphic designing. Currently I am on track to graduate in four more semesters and I hope to land a job in the healthcare management field.


Note: This example does not work in Internet Explorer 9 and earlier versions.
Note: When an animation is finished, it changes back to its original style.


---
layout: default
title: Projects
---
Here I list my personal and professional projects
Professional
A Framework for Intelligent Navigation of Mobile Robots about blog
Behavior Tree for Mobile Robots about blog
Path-finding algorithm based on D*Lite about blog
Personal
Team Fortress 2 Log Analyzer about blog
Conhecendo o Time about blog
This War of Mine about blog


Stephanie Rothenberg
Garden of Virtual Kinship
The Garden of Virtual Kinship is a telematic garden, both real and virtual, whose lifeline directly correlates to monetary exchanges between the developed and developing world.
More infoThe Garden of Virtual Kinship is a telematic garden, both real and virtual, whose lifeline directly correlates to monetary exchanges between the developed and developing world.
More infoJenna is a NYC artist that was looking at building a modular structure that looked like an outhouse. Her goal was to create an emersive auditory experience.
More infoTim Daly and I worked with Standard Transmission to create a series of pieces for the Macy's Holiday Windows. The title of the window display was "Santa’s Journey to the Stars", which featured a kid looking for Santa through space.
More infoRecoil to Space is a light and projection pod that sits on the floor, looking at the space above. The pod opens a portal to an infinite space. From that infinity, the pod sends our thoughts, our data, and messages, hoping to receive a response.
More info


leex
Module
Module Summary
Description
A regular expression based lexical analyzer generator for Erlang, similar to lex or flex.
The Leex module should be considered experimental as it will be subject to changes in future releases.
DATA TYPES
ErrorInfo = {ErrorLine,module(),error_descriptor()} ErrorLine = integer() Token = tuple()
Exports
file(FileName, [, Options]) -> LeexRet
Types
Generates a lexical analyzer from the definition in the input file. The input file has the extension .xrl. This is added to the filename if it is not given. The resulting module is the Xrl filename without the .xrl extension.
The current options are:
- dfa_graph
-
Generates a .dot file which contains a description of the DFA in a format which can be viewed with Graphviz, www.graphviz.com.
- {includefile,Includefile}
-
Uses a specific or customised prologue file instead of default lib/parsetools/include/leexinc.hrl which is otherwise included.
- {report_errors, bool()}
-
Causes errors to be printed as they occur. Default is true.
- {report_warnings, bool()}
-
Causes warnings to be printed as they occur. Default is true.
- warnings_as_errors
-
Causes warnings to be treated as errors.
- {report, bool()}
-
This is a short form for both report_errors and report_warnings.
- {return_errors, bool()}
-
If this flag is set, {error, Errors, Warnings} is returned when there are errors. Default is false.
- {return_warnings, bool()}
-
If this flag is set, an extra field containing Warnings is added to the tuple returned upon success. Default is false.
- {return, bool()}
-
This is a short form for both return_errors and return_warnings.
- {scannerfile, Scannerfile}
-
Scannerfile is the name of the file that will contain the Erlang scanner code that is generated. The default ("") is to add the extension .erl to FileName stripped of the .xrl extension.
- {verbose, bool()}
-
Outputs information from parsing the input file and generating the internal tables.
Any of the Boolean options can be set to true by stating the name of the option. For example, verbose is equivalent to {verbose, true}.
Leex will add the extension .hrl to the Includefile name and the extension .erl to the Scannerfile name, unless the extension is already there.
format_error(ErrorInfo) -> Chars
Types
Returns a string which describes the error ErrorInfo returned when there is an error in a regular expression.
GENERATED SCANNER EXPORTS
The following functions are exported by the generated scanner.
Exports
string(String) -> StringRet
string(String, StartLine) -> StringRet
Types
Scans String and returns all the tokens in it, or an error.
It is an error if not all of the characters in String are consumed.
token(Cont, Chars) -> {more,Cont1} | {done,TokenRet,RestChars}
token(Cont, Chars, StartLine) -> {more,Cont1}
| {done,TokenRet,RestChars}
Types
This is a re-entrant call to try and scan one token from Chars. If there are enough characters in Chars to either scan a token or detect an error then this will be returned with {done,...}. Otherwise {cont,Cont} will be returned where Cont is used in the next call to token() with more characters to try an scan the token. This is continued until a token has been scanned. Cont is initially [].
It is not designed to be called directly by an application but used through the i/o system where it can typically be called in an application by:
io:request(InFile, {get_until,Prompt,Module,token,[Line]}) -> TokenRet
tokens(Cont, Chars) -> {more,Cont1} | {done,TokensRet,RestChars}
tokens(Cont, Chars, StartLine) ->
{more,Cont1} | {done,TokensRet,RestChars}
Types
This is a re-entrant call to try and scan tokens from Chars. If there are enough characters in Chars to either scan tokens or detect an error then this will be returned with {done,...}. Otherwise {cont,Cont} will be returned where Cont is used in the next call to tokens() with more characters to try an scan the tokens. This is continued until all tokens have been scanned. Cont is initially [].
This functions differs from token in that it will continue to scan tokens upto and including an {end_token,Token} has been scanned (see next section). It will then return all the tokens. This is typically used for scanning grammars like Erlang where there is an explicit end token, '.'. If no end token is found then the whole file will be scanned and returned. If an error occurs then all tokens upto and including the next end token will be skipped.
It is not designed to be called directly by an application but used through the i/o system where it can typically be called in an application by:
io:request(InFile, {get_until,Prompt,Module,tokens,[Line]}) -> TokensRet
Input File Format
Erlang style comments starting with a % are allowed in scanner files. A definition file has the following format:
<Header> Definitions. <Macro Definitions> Rules. <Token Rules> Erlang code. <Erlang code>
The "Definitions.", "Rules." and "Erlang code." headings are mandatory and must occur at the beginning of a source line. The <Header>, <Macro Definitions> and <Erlang code> sections may be empty but there must be at least one rule.
Macro definitions have the following format:
NAME = VALUE
and there must be spaces around =. Macros can be used in the regular expressions of rules by writing {NAME}.
When macros are expanded in expressions the macro calls are replaced by the macro value without any form of quoting or enclosing in parentheses.
Rules have the following format:
<Regexp> : <Erlang code>.
The <Regexp> must occur at the start of a line and not include any blanks; use \t and \s to include TAB and SPACE characters in the regular expression. If <Regexp> matches then the corresponding <Erlang code> is evaluated to generate a token. With the Erlang code the following predefined variables are available:
- TokenChars
-
A list of the characters in the matched token.
- TokenLen
-
The number of characters in the matched token.
- TokenLine
-
The line number where the token occurred.
The code must return:
- {token,Token}
-
Return Token to the caller.
- {end_token,Token}
-
Return Token and is last token in a tokens call.
- skip_token
-
Skip this token completely.
- {error,ErrString}
-
An error in the token, ErrString is a string describing the error.
It is also possible to push back characters into the input characters with the following returns:
- {token,Token,PushBackList}
- {end_token,Token,PushBackList}
- {skip_token,PushBackList}
These have the same meanings as the normal returns but the characters in PushBackList will be prepended to the input characters and scanned for the next token. Note that pushing back a newline will mean the line numbering will no longer be correct.
Pushing back characters gives you unexpected possibilities to cause the scanner to loop!
The following example would match a simple Erlang integer or float and return a token which could be sent to the Erlang parser:
D = [0-9] {D}+ : {token,{integer,TokenLine,list_to_integer(TokenChars)}}. {D}+\.{D}+((E|e)(\+|\-)?{D}+)? : {token,{float,TokenLine,list_to_float(TokenChars)}}.
The Erlang code in the "Erlang code." section is written into the output file directly after the module declaration and predefined exports declaration so it is possible to add extra exports, define imports and other attributes which are then visible in the whole file.
Regular Expressions
The regular expressions allowed here is a subset of the set found in egrep and in the AWK programming language, as defined in the book, The AWK Programming Language, by A. V. Aho, B. W. Kernighan, P. J. Weinberger. They are composed of the following characters:
- c
-
Matches the non-metacharacter c.
- \c
-
Matches the escape sequence or literal character c.
- .
-
Matches any character.
- ^
-
Matches the beginning of a string.
- $
Matches the end of a string.
- [abc...]
-
Character class, which matches any of the characters abc.... Character ranges are specified by a pair of characters separated by a -.
- [^abc...]
-
Negated character class, which matches any character except abc....
- r1 | r2
-
Alternation. It matches either r1 or r2.
- r1r2
-
Concatenation. It matches r1 and then r2.
- r+
-
Matches one or more rs.
- r*
-
Matches zero or more rs.
- r?
-
Matches zero or one rs.
- (r)
-
Grouping. It matches r.
The escape sequences allowed are the same as for Erlang strings:
- \b
Backspace.
- \f
Form feed.
- \n
Newline (line feed).
- \r
Carriage return.
- \t
Tab.
- \e
Escape.
- \v
Vertical tab.
- \s
Space.
- \d
Delete.
- \ddd
The octal value ddd.
- \xhh
The hexadecimal value hh.
- \x{h...}
The hexadecimal value h....
- \c
-
Any other character literally, for example \\ for backslash, \" for ".
The following examples define simplified versions of a few Erlang data types:
Atoms [a-z][0-9a-zA-Z_]* Variables [A-Z_][0-9a-zA-Z_]* Floats (\+|-)?[0-9]+\.[0-9]+((E|e)(\+|-)?[0-9]+)?
Anchoring a regular expression with ^ and $ is not implemented in the current version of Leex and just generates a parse error.


St. Martin's Island
St. Martin's Island is a small island (area only 36 km sq.) in the northeastern part of the Bay of Bengal, about 9 km south of the tip of the Cox's Bazar-Teknaf peninsula, and forming the southernmost part of Bangladesh. There is a small adjoining island that is separated at high tide, called Chera Dwip. It is about 8 kilometres (5 miles) west of the northwest coast of Myanmar, at the mouth of the Naf River.
Millenia ago, the island used to be an extension of the Teknaf peninsula, but at a later time some portion of this peninsula got submerged and thus the southernmost part of the aforementioned peninsula became an island, and was disconnected from the Bangladesh mainland. The first settlement started 250 years ago by Arabian sailors who named the island 'Jazeera'. During British occupation the island was named after the then Deputy Commissioner of Chittagong Mr. Martin as St. Martin Island.[3] The local names of the island are "Narikel jinjira"[4] which means 'Coconut Island', and "Daruchini Dwip" which means "Cinnamon island". It is the only coral island in Bangladesh.
Most of the island's approximately 3,700 inhabitants live primarily from fishing. The other staple crops are rice and coconut. Being very common on the island, algae are collected, dried, and exported to Myanmar. Between October and April, the fishermen from neighboring areas bring their caught fishes to the island's temporary wholesale market. However, imports of chicken, meat and other foods come in from the mainland Bangladesh and Myanmar (Burma). As the centre and the south are mainly farmland and makeshift huts, most of the permanent structures are around the far north. During the rainy season, because of the dangerous conditions on the Bay of Bengal, the inhabitants have no scope to go to the mainland (Teknaf) and their life can become dangerous. There is a hospital on the island, but in the past there has often been no doctor.
Free for all tourists.
Always open.


Your job is to analyze the damage to the spacecraft.
Your job is to repair the damage to the spacecraft.


This page is served by Spring Boot. The source is in src/main/resources/public/index.html.
src/main/resources/public/index.html


lodge
Building blocks for easier, smarter overlays & embeds
Let's take a look.
We set up a quick demo embed to show off the basics and a little more. Just click below for a tour.
Features
A few basics
Embed iframes are created from simple markup:
<embed class="lodge" src="embed.html">
It's all event driven, and Lodge will tell you when it's ready:
window.lodge.addEventListener('ready', function(e) {
// ...do something
});
Lodge inserts empty utility classes so you can make a page context-responsive — styles for standalone, embed, and embed-in-overlay:
.lodge__embed, .lodge__embed--overlay
Need to see what's happening in real-time as your scripts run? Just add ?debug=true
to
the main page URL and see console log activity for the main page and embeds.


SAE stands for the Society Of Automotive Engineers and is an internationally active professional association for Engineering professionals and students.
SAE GEC Thrissur, a collegiate member of SAEINDIA began in 2016 when an enthusiastic group of our seniors wanted to pursue engineering that was taught beyond their curriculum and texts. There were difficulties at first, but hard work and determination got us through. In 2019, Team-BHP came in 3rd for the tractor design competition conducted by SAEISS and put us on the map. Since then, there has been no looking back and the club has been the cornerstone in our institution for the development of industry-relevant skills and etiquette. As a result, the club grew tremendously and has been involved and awarded in several major projects such as M-Baja, E-Baja, TDC, ADC, BDC, ETWDC, Efficycle, and so on. We intend to develop and nurture a much-needed engineering culture among students. And sure enough, we plan to learn new information that others can bring to the table as well.
The Society Of Automotive Engineers India is India's leading resource for mobility technology. As an individual member-driven society of mobility practitioners, the ownership of SAEINDIA rests with its members who are Individuals from the mobility community, which includes Engineers, Executives from Industry, Government Officials, Academicians and Students. SAEINDIA is a strategic alliance partner of SAE International registered in India as an Indian nonprofit engineering and scientific society dedicated to the advancement of the mobility industry in India. SAEINDIA is divided into four sections - Bengaluru section, Northern & Eastern action, Southern section and the Western section.
The Society Of Automotive Engineers India is India's leading resource for mobility technology.
SAE International is a globally active professional association and standards developing organization for engineering professionals in various industries.
SAE International is a globally active professional association and standards developing organization for engineering professionals in various industries. SAE International World Headquarters is in Warrendale, Pennsylvania. Principal emphasis is placed on global transport industries such as aerospace, automotive, and commercial vehicles.SAE International boasts of over 1,38,000 global members. Membership is granted to individuals, rather than companies. Aside from its standardization efforts, SAE International also devotes resources to projects and programs in STEM education, professional certification, and collegiate design competitions.
By having a student membership in SAEINDIA, students can participate in various competitions and also attend conferences and webinars conducted by SAEINDIA. It is a great opportunity to connect with industry leaders, enhance your skills and leadership experience. In addition to this, the members can access Automotive and Engineering magazines, and SAEINDIA's Newsletter featuring society events, industry news, job openings, and more. Students belonging to any year can take annual membership. But in order to participate in events like BAJA, SUPRA, annual membership will be invalid. Moreover, the annual membership expires by March every year.
SAE GECT collegiate club has never failed in bringing laurels to our college. Wishing the club members all the very best for their future endeavours.
SAE GECT Chapter provides you the perfect opportunity to acquire the offers from SAEINDIA in raising yourselves to the industrial standards.
SAE GECT is one among the most successful collegiate clubs in the state. Being an active member of such a great club will unveil the treasure of opportunities to learn, groom, enjoy and equip yourself for the future.


Before Change
return sentiments
def _only_if_check(self, words_and_emoticons, sentiments):
words_and_emoticons_lower = [str(w).lower() for w in words_and_emoticons]
check = "only"
if check in words_and_emoticons_lower:
i = words_and_emoticons_lower.index(check)
if len(words_and_emoticons)>i+1 and "if" == words_and_emoticons_lower[i+1]:
for si, sentiment in enumerate(sentiments):
After Change
Not used in default VADER algorithm.
Extension from https://github.com/nltk/nltk/pull/2307
for idx, ng in enumerate(ngrams(words_and_emoticons, 2)):
if ng == ("only", "if"):
for sidx, sentiment in enumerate(sentiments):
if idx < sidx:
sentiments[sidx] = sentiment * 0.5
return sentiments
def _in_spite_of_check(self, words_and_emoticons, sentiments):


In connection with this insurance rate quote and any renewal of insurance, we may obtain or use a
credit-based insurance score based on the information contained in your credit report. We may use a
third party in connection with the development of your insurance score.


--- layout: post authors: ["Greg Wilson"] title: An Update on Cumulative Enrolment date: 2013-04-29 time: "09:00:00" tags: ["Community"] ---
It's been a busy few months, and the next three promise to be busier still. Somewhere in there we helped our two thousandth learner, and if everything goes well, we'll reach 2500 by mid-summer.
Many thanks to the entire team for their hard work.


Please, download your keystore file now. You can restore your Raiden account
with this file and the password via Metamask.
{% if not network.FAUCET_AVAILABLE %}
Send {{ ethereum_required.formatted }} to your Raiden account. 0.075 ETH are used as safety buffer
to operate 3 channels. 0.05 ETH are needed for RDN and DAI tokens.
You can withdraw those {{ ethereum_required.formatted }} minus the amount you will have spent in a
transaction or as transaction fees.
{% end %}
{% end %}
{% block page_header_scripts %}
{% end %}


Avoid qualifying elements in selectors (also known as "tag-qualifying").
Bad: qualifying elements
div#thing {
...
}
ul.list {
...
}
ul li.item {
...
}
a[href="place"] {
...
}
Good
#thing {
...
}
.list {
...
}
ul .item {
...
}
[href="place"] {
...
}
Since IDs are unique, they will not apply to multiple elements, so there is no good reason to qualify an ID selector with an element.
In most cases, qualifying a class or attribute selector with an element adds unnecessary or undesirable specificity. Often the element qualifier is already superfluous; and if it is not, you will probably be better off refactoring so that it can be removed.
Use the options to allow certain qualifying elements.
| Configuration Option | Description |
|---|---|
allow_element_with_attribute |
Allow elements to qualify attributes (default false) |
allow_element_with_class |
Allow elements to qualify classes (default false) |
allow_element_with_id |
Allow elements to qualify ids (default false) |


Want to transform the same types of files in multiple ways in a single build? Create a named pipeline, and use it as a URL scheme in your code.
For example, you could inline the compiled contents of a bundle as text, a data URL, an ArrayBuffer, or anything else! Or if you're building a documentation site, you could import both the generated API docs and source code for a file. The possibilities are endless.
Learn more →{
"extends": "@parcel/config-default",
"transformers": {
"buffer:*": ["...", "parcel-transformer-buffer"]
}
}
import buffer from 'buffer:./logo.png';


Whatever it takes to tell it stunningly.
Pete Lee is a San Francisco-based director, who grew up during the golden age of kung-fu cinema and immigrated from subtropical Taiwan to New England as a teen.  Eventually Lee moved to San Francisco, where he ran an art program for homeless youths by day and filmed on weekends.
Lee then started applying the wit, grit, and kinetics of kung-fu movies to other stories. He collaborated with housing activists, animators, musicians, comedians, and a famous dwarf cat, growing an unlikely community.
Currently, Lee is preparing his short film ”Don't Be a Hero” for a festival run. His latest documentary project, “Johnny Physical Lives” premiered at HotDocs 2016. In his spare time, Lee sponsors a kung-fu movie series and runs pop-up fundraisers for those affected by the Bay Area housing crisis. He does not know how to ride a bike.


Collections in JavaThe Collection in Java is a framework that provides an architecture to store and manipulate the group of objects. Java Collections can achieve all the operations that you perform on a data such as searching, sorting, insertion, manipulation, and deletion. Java Collection means a single unit of objects. Java Collection framework provides many interfaces (Set, List, Queue, Deque) and classes (ArrayList, Vector, LinkedList, PriorityQueue, HashSet, LinkedHashSet, TreeSet). What is Collection in JavaA Collection represents a single unit of objects, i.e., a group. What is a framework in Java
What is Collection frameworkThe Collection framework represents a unified architecture for storing and manipulating a group of objects. It has:
Hierarchy of Collection FrameworkLet us see the hierarchy of Collection framework. The java.util package contains all the classes and interfaces for the Collection framework. Methods of Collection interfaceThere are many methods declared in the Collection interface. They are as follows:
Iterator interface
Methods of Iterator interfaceThere are only three methods in the Iterator interface. They are:
Iterable InterfaceThe Iterable interface is the root interface for all the collection classes. The Collection interface extends the Iterable interface and therefore all the subclasses of Collection interface also implement the Iterable interface. It contains only one abstract method. i.e., It returns the iterator over the elements of type T. Collection InterfaceThe Collection interface is the interface which is implemented by all the classes in the collection framework. It declares the methods that every collection will have. In other words, we can say that the Collection interface builds the foundation on which the collection framework depends. Some of the methods of Collection interface are Boolean add ( Object obj), Boolean addAll ( Collection c), void clear(), etc. which are implemented by all the subclasses of Collection interface. List InterfaceList interface is the child interface of Collection interface. It inhibits a list type data structure in which we can store the ordered collection of objects. It can have duplicate values. List interface is implemented by the classes ArrayList, LinkedList, Vector, and Stack. To instantiate the List interface, we must use : There are various methods in List interface that can be used to insert, delete, and access the elements from the list. The classes that implement the List interface are given below. ArrayListThe ArrayList class implements the List interface. It uses a dynamic array to store the duplicate element of different data types. The ArrayList class maintains the insertion order and is non-synchronized. The elements stored in the ArrayList class can be randomly accessed. Consider the following example. Output: Ravi Vijay Ravi Ajay LinkedListLinkedList implements the Collection interface. It uses a doubly linked list internally to store the elements. It can store the duplicate elements. It maintains the insertion order and is not synchronized. In LinkedList, the manipulation is fast because no shifting is required. Consider the following example. Output: Ravi Vijay Ravi Ajay VectorVector uses a dynamic array to store the data elements. It is similar to ArrayList. However, It is synchronized and contains many methods that are not the part of Collection framework. Consider the following example. Output: Ayush Amit Ashish Garima StackThe stack is the subclass of Vector. It implements the last-in-first-out data structure, i.e., Stack. The stack contains all of the methods of Vector class and also provides its methods like boolean push(), boolean peek(), boolean push(object o), which defines its properties. Consider the following example. Output: Ayush Garvit Amit Ashish Queue InterfaceQueue interface maintains the first-in-first-out order. It can be defined as an ordered list that is used to hold the elements which are about to be processed. There are various classes like PriorityQueue, Deque, and ArrayDeque which implements the Queue interface. Queue interface can be instantiated as: There are various classes that implement the Queue interface, some of them are given below. PriorityQueueThe PriorityQueue class implements the Queue interface. It holds the elements or objects which are to be processed by their priorities. PriorityQueue doesn't allow null values to be stored in the queue. Consider the following example. Output: head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj Deque InterfaceDeque interface extends the Queue interface. In Deque, we can remove and add the elements from both the side. Deque stands for a double-ended queue which enables us to perform the operations at both the ends. Deque can be instantiated as: ArrayDequeArrayDeque class implements the Deque interface. It facilitates us to use the Deque. Unlike queue, we can add or delete the elements from both the ends. ArrayDeque is faster than ArrayList and Stack and has no capacity restrictions. Consider the following example. Output: Gautam Karan Ajay Set InterfaceSet Interface in Java is present in java.util package. It extends the Collection interface. It represents the unordered set of elements which doesn't allow us to store the duplicate items. We can store at most one null value in Set. Set is implemented by HashSet, LinkedHashSet, and TreeSet. Set can be instantiated as: HashSetHashSet class implements Set Interface. It represents the collection that uses a hash table for storage. Hashing is used to store the elements in the HashSet. It contains unique items. Consider the following example. Output: Vijay Ravi Ajay LinkedHashSetLinkedHashSet class represents the LinkedList implementation of Set Interface. It extends the HashSet class and implements Set interface. Like HashSet, It also contains unique elements. It maintains the insertion order and permits null elements. Consider the following example. Output: Ravi Vijay Ajay SortedSet InterfaceSortedSet is the alternate of Set interface that provides a total ordering on its elements. The elements of the SortedSet are arranged in the increasing (ascending) order. The SortedSet provides the additional methods that inhibit the natural ordering of the elements. The SortedSet can be instantiated as: TreeSetJava TreeSet class implements the Set interface that uses a tree for storage. Like HashSet, TreeSet also contains unique elements. However, the access and retrieval time of TreeSet is quite fast. The elements in TreeSet stored in ascending order. Consider the following example: Output: Ajay Ravi Vijay
Next Topic
Java ArrayList
|


I first conducted these tests in October 2014 in response to a 3D-Pro thread discussing the likely effects
of using ACES primaries (specifically AP0) as a rendering color space. Since then the ACEScg specification
was released (AP1), which is roughly equivalent to Rec.2020, so if you like you can read "Rec.2020" as
"ACEScg" below.
This page compares images rendered in Arnold using spectral rendering and different sets of colourspace primaries: Rec.709,
Rec.2020, ACES and DCI-P3. The SPD data for the GretagMacbeth Color Checker are the measurements of Noburu
Ohta, taken from Mansencal, Mauderer and Parsons (2014) colour-science.org.
Each box is lit by a small area light with a D65 SPD. All spectral calculations are performed over the
interval [380nm, 780nm] at 5nm increments. For the RGB renders, the colour swatches are preconverted into
the appropriate primaries before rendering, and the lightsource is pure white (1,1,1). To make comparison
easier, all RGB colour spaces are assumed to have a D65 whitepoint. All materials are pure lambertian and
the scene was rendered with 10 bounces.
You can compare the images with the slider thingy I nicked from Wojciech
Jarosz's website or you can download all the jpegs and exrs from google drive here:
color_checker_comparisons_v0002.zip
TL;DR: There's no clear winner, but Rec. 2020 performs the best from the options so far.
Contents
1. Rec. 709 Display
First, we compare images rendered in spectral, Rec.709, Rec.2020 and ACES and converted for a Rec.709 display using a display
gamma of 2.2. In other words, it asks the question "what are the best set of primaries for rendering when
targeting a computer monitor?"
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Rec. 709 (gamma 2.2) display comparison
Click the links below to open the full-res (3k) jpegs.
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
RGB Rec. 709 - RMSE 0.0138161
RGB Rec. 2020 - RMSE 0.00704586
RGB ACES - RMSE 0.0153788
Rec. 709 2x diff comparison
|
Primaries
|
RMS error
|
|
Rec. 709
|
0.0138161
|
|
Rec. 2020
|
0.00704586
|
|
ACES
|
0.0153788
|
2. DCI-P3 Display
Next, we target a DCI-P3 display, rendering spectrally and with Rec.709, Rec.2020, ACES and DCI-P3 primaries (but with a
D65 white point). In this case we are asking, "what is the best set of primaries for rendering when targeting
a digital cinema projector?"
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
Spectral
RGB Rec. 709
RGB Rec. 2020
RGB ACES
DCI-P3 (gamma 2.2) display comparison
Click the links below to open the full-res (3k) jpegs.
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
RGB DCI-P3 - RMSE 0.00740128
RGB Rec. 709 - RMSE 0.011618
RGB Rec. 2020 - RMSE 0.00581693
RGB ACES - RMSE 0.0130438
DCI-P3 (gamma 2.2) 2x diff comparison
|
Primaries
|
RMS error
|
|
DCI-P3
|
0.00740128
|
|
Rec. 709
|
0.011618
|
|
Rec. 2020
|
0.00581693
|
|
ACES
|
0.0130438
|
3. Colour Volume Anaysis
Finally, we examine the range of colours generated relative to different colour volumes. Since we're targeting digital cinema,
we'll just consider the P3 gamut and Pointer's gamut (please see colour-science.org
for more volumes).
 For the full results, including
chroma diagrams, please see his
notebook
.
First, DCI-P3. The P3 volume is large enough that even rendering with ACES primaries doesn't generate any out-of-gamut colours,
so we're safe!

All the primaries generate non-physical colours, with ACES (unsurprisingly) being the worst, but not by
much.
 Conclusions
The main takeaway is that, as expected, rendering in any set of 3 primaries is inadequate compared to spectral rendering.
Subjectively speaking, the differences aren't huge (at least in this limited test) and all the spaces suffer
from some noticeable colour shifts relative to the reference. Rec. 709 seems to suffer the worst from this,
generating the most saturated colours. In terms of what makes a good colour space for rendering, Rec. 2020
gives both the lowest RMS error and the smallest amount of colours that lie outside Pointer's gamut, the
latter being theoretically important for generating physically plausible renders.
More tests need to be done. In particular the next round of tests will consider glossy objects. It would be good to try Greg
Ward's SharpRGB colour space and see how that compares. The tests should be fixed to use native white points
and proper chromatic adaptation, to see if that affects the results. It would also be good to try some
different scenes with different spectral data - a physical sun/sky system perhaps.


I started coding in July 2020 and I am a self taught developer. I have a serious passion for modern looking websites with little bit of animations. Looking forward to amalgamate the knowledge acquired through engineering along with a course on Web development masterclass to provide the best results for the organisation.
I have created a fun and creative project through my web development skills. Click on the pixel art maker.
Our proposed project stresses on crucial aspects of public toilet sanitation conditions such as foul odor, irregular light provisions and faulty flush tanks/septic tanks. We have made use of HC-SR04 Ultrasonic sensor for depth detection of septic waste, MQ-05 Gas Sensor for ammonia gas detection and PIR Motion sensor to trigger the light switch ’on’ or ‘off’ depending on whether the toilet cabin is in use or not. This will also ensure no electricity is wasted. This project turns out to be effective, efficient as well as economical and thus can be implemented in all the public toilets.
Used Arduino Uno to increment and decrement the number of cars entering and exiting a parking lot. This could thereby help detect a vacant parking spot for a vehicle automatically.
Made use of Arduino Uno to help supply electricity without the system of wires. Can be used to charge pacemakers without the need for pacemaker replacement surgery. Can be used to supply power to areas where load shedding occurs.
CGPA: 6.79/10
Apart from being a web developer, I enjoy most of my time being outdoors. In the winter, I like to travel to colder region where i can experience skiing or ice skating. During the warmer months here in Mumbai, I enjoy mountain cycling and trekking.
When forced indoors, I follow a number of sci-fi and fantasy genre movies and television shows, I am an aspiring chef, and I spend a large amount of my free time exploring the latest technology advancements in the front-end web development world.


{% extends "table.html" %} {% block title %}Transitions{% endblock %} {% block page_content %}
This page catalogues all of the information about the transitions targeted in the MAPS large program. The rightmost column contains links to the pages describing the imaging products for each disk. The button status signifies the following
| Trans. ID | Molecule | Quant Num | Frequency (GHz) | Band | SPW | Disks | |
|---|---|---|---|---|---|---|---|
| {{transition.transition_id}} | {{transition.molecule_name}} | {{transition.quantum_number}} | {{ "%.6f"| format(transition.frequency)}} | {{transition.band_id}} | {{transition.spw_id}} | {# This column is to create a links back to the disk/transition page for each disk. In the following row (), we want to iterate among the (disk_name,disk_id) pairs, name the button the disk name, link to the url_for(disk_id, transition_id). We also want to color the button according to whether the MS exists on disk and whether there are any runs for it. If there's no MS, don't show it. If there is an MS but no runs, make it secondary. So we need to create columns MS_count and RUN_count on transitions. I think the best way to do this is create a second dictionary in the views which is indexed by (disk_id, transition_id): {MS : bool, RUN: bool}. #} | {% for item in disk_pairs %} {% set ms_count, run_count = disk_transition_dict[(item[1], transition.transition_id)] %} {% if (ms_count > 0) and (run_count > 0) %} {{item[0]}} {% elif ms_count > 0 %} {{item[0]}} {% else %} {{item[0]}} {% endif %} {% endfor %} |


{% extends 'funds/includes/round-block-listing.html' %} {% block empty_round %}
You have no {{ type|lower }} rounds or labs assigned to you.


{{ block title }} Page title {{ endblock }} {{ block content }}
In each round, a higher effort level is
{{ form.q1 }}In each round, a higher effort level is
{{ form.q2 }}For each round, I will be paid
{{ form.q3_bonus }}For each round, I will be paid
{{ form.q3_penalty }}For each round, I will be paid
{{ form.q3_bonus_penalty }}For each round, without considering the monetary cost of effort, if I achieve a higher outcome level,
{{ form.q4_bonus }}For each round, without considering the monetary cost of effort, if I achieve a higher outcome level,
{{ form.q5_penalty }}For each round, without considering the monetary cost of effort, if I achieve a higher outcome level,
{{ form.q6_bonus_penalty }}


|
FIND ME GUILTY
by Judge J. Howard Sundermann
This film is about the longest trial in American history. It
was the criminal trial of the Lucchese family of New Jersey,
there were twenty defendants and the trial lasted twenty-one
months.  But in the skilled hands of director
Sidney Lumet, he is terrific in this part. Lumet has a distinguished
career including such courtroom classics as 12 Angry Men
and The Verdict. These films were a search for justice
and justice ultimately triumphs, in Find Me Guilty we
see the process but not any triumph of justice.
Even though this
is a "mob" movie, there is only one brief scene of
violence at the beginning; almost all of the screen time is the
trial itself. Much of the dialogue comes right from the transcript
of the trial. The Diesel character plays one of the twenty defendants
and decides to defend himself pro se. All of the other defendants
are represented, the smartest of the defense lawyers is a dwarf,
and a podium with stairs is tastefully wheeled out for him whenever
he addresses the jury. The other defense attorneys are presented
as generally indistinguishable from their disreputable clients.
The Diesel character is supposed to represent common sense and
getting to the heart of the matter rather than all the legalese
and complex testimony that took up most of the twenty-one months.
Diesel charms the jury in his cross-examination of witnesses
and tests the legal maxim that "a laughing jury is not a
hanging jury."
The Diesel character is not easy to root for. He was clearly
a soldier for the mob, engaged in all manor of crimes and violence.
He is steadfastly loyal to his "family", turning down
a plea bargain saying "I don't rat on my friends."
His cousin shot him while he was in bed but Diesel refused to
identify his cousin as the shooter saying my eyes were closed
the whole time. Are we supposed to admire this misplaced loyalty
and adherence to the code of Omerta? All of the defendants,
including Diesel, seem clearly guilty of the charges, but we
as viewers are charmed and amused as well as the jury. But will
this be enough to get a not guilty verdict; it will cost you
$8.00 to find out.
The lead prosecutor is portrayed as an all too typical movie
prosecutor, arrogant and egotistical, ordering everyone around.
But he is competent and fanatic about getting a conviction in
this case. Diesel's cross-examinations revel some latent anti-Italian
views on the part of some of the federal witnesses. He asks
an FBI agent how he knew a group he observed were Italians, the
answer described black hair, loud talk and waving hands. The
film exposes the needless complexity and length of such a trial
and the difficulty that our judicial and jury system have in
dealing with it.
The judge is well played by Ron Silver; he tries his best to
keep things moving and to avoid a mistrial. He is annoyed by
the Diesel character, but becomes more tolerant, even sympathetic,
as the trial proceeds. The usual cinematic license is exercised
with the judge. There are numerous ex-parte conferences, one
with only the judge and Diesel, and the judge is shown to have
a full bar on display in chambers with the liquor in crystal
decanters.
This film has its defects, but it is very good. I'm afraid it
will not be in theaters long as it does not have much action
or sex, but the film is well worth seeing, Lumet has not lost
his courtroom touch.
Posted March 10, 2006
|


ROMEO AND JULIET (1996) A film review by James Berardinelli Copyright 1996 James Berardinelli
RATING (0 TO 10): 7.5 Alternative Scale: *** out of ****
United States, 1996 U.S. Release Date: 11/1/96 (wide) Running Length: 2:00 MPAA Classification: PG-13 (Mature themes, violence) Theatrical Aspect Ratio: 2.35:1
Cast: Leonardo DiCaprio, Claire Danes, Brian Dennehy, John Leguizamo, Pete Postlethwaite, Paul Sorvino, Miriam Margolyes, Diane Venora, Harold Perrineau Director: Baz Luhrmann Producer: Gabriella Martinelli and Baz Luhrmann Screenplay: Craig Pearce and Baz Luhrmann based on the play by William Shakespeare Cinematography: Donald M. McAlpine Music: Nellee Hooper U.S. Distributor: Twentieth Century Fox
In LOOKING FOR RICHARD, actor/director Al Pacino expressed his greatest hope for the film -- that he could extend his enthusiasm for the Bard's plays to a broader audience. In a very different way, that's what Baz Luhrmann (STRICTLY BALLROOM) is attempting to do with this radical approach to "Romeo and Juliet". Luhrmann hasn't fashioned this motion picture with the stodgy, elitist Shakespeare "purist" in mind. Instead, by incorporating lively, modern imagery with a throbbing rock soundtrack and hip actors, he has taken aim at an audience that would normally regard Shakespeare as a chore to be endured in school, not a passionate drama to ignite the screen.
Make no mistake, this ROMEO AND JULIET isn't the match of Franco Zeffirelli's unforgettable 1968 classic. While Leonardo DiCaprio and Claire Danes make an effective couple, their romance doesn't burn with the white-hot intensity of Leonard Whiting and Olivia Hussey's. Nevertheless, this interpretation is so fundamentally different from anything to have come before it that there's no danger of repetition. By the same token, there have been two different "Richard III"s in the past twelve months, and no one is complaining.
For those who aren't aware, "Romeo and Juliet" tells the tale of two "star-cross'd" teenage lovers who secretly fall for each other and marry. Their families, the Montagues and Capulets, have been fierce enemies for decades, and, even as Romeo and Juliet say their wedding vows, new violence breaks out between the clans. In the end, their love is doomed. When Romeo mistakenly believes Juliet is dead, he poisons himself.
Luhrmann's ROMEO AND JULIET (properly titled WILLIAM SHAKESPEARE'S ROMEO AND JULIET) takes the play and deposits it in a modern Verona Beach that is part decaying Miami and part Mexico City. By the director's own admission, this is a created world, borrowing aspects of its unique visual style from such diverse periods as the 1940s, 1970s, and 1990s, and using a variety of classic films (most notably REBEL WITHOUT A CAUSE) for inspiration. Fast cars with roaring engines replace horses. Guns stand in for swords and daggers. The resulting hybrid background is startling.
ROMEO AND JULIET's camera is restless, always moving. There are times when the rapid cuts and raging soundtrack might cause understandable confusion between the movie and a rock video. Indeed, with all the camera tricks, special effects (such as a roiling storm), and riotous splashes of color, it's easy to lose the story in the style. Luhrmann's intent was never to drown Shakespeare's dialogue in technique, but it happens, especially early in the film. In the process, the more subtle intangibles of the romance are irretrievably lost.
The movie settles down when Romeo (DiCaprio) and Juliet (Danes) first come face-to-face, gazing at each other through the transparent panes of an aquarium while a love ballad plays in the background. It's a delicately romantic moment whose magic is never quite matched by any other scene in the film. Danes makes a breathtaking Juliet, merging strength and fragility into one. DiCaprio isn't quite as successful as Romeo; there are times when his delivery of Shakespeare's dialogue sounds forced, and, on at least one occasion (when he learns about Juliet's supposed death), he goes way over-the-top.
The supporting cast has its share of successes and failures. John Leguizamo plays a particularly effective Tybalt, Juliet's Latino cousin. Despite a terrible accent, Miriam Margolyes gives a delightful interpretation of Juliet's nurse. In a daring move that works, Harold Perrineau's Mercutio is presented as a high-energy drag queen who gets a chance to strut his stuff to a disco tune with Shakespearean lyrics. Pete Postlethwaite (as Father Laurence) and Vondie Curtis-Hall (Captain Prince) are both at ease in their roles. Brian Dennehy's presence is, as always, imposing, but, as Lord Montague, he doesn't have more than a handful of lines. Less successful are Paul Sorvino's cartoon-like portrayal of Lord Capulet and Diane Verona's Blanche DuBois-flavored version of his wife. And a pair of characters, Paul Rudd's Paris and Jesse Bradford's Balthasar, are so ineffectual that they're virtually invisible.
There are moments of comedy in Shakespeare's play, and Luhrmann tries to transfer some of these over, in addition to adding a few of his own. One in particular, with Romeo ineptly scaling a trellis for the famous balcony sequence, is ill-placed. Also, there are times when the director gets a little too cute. A run-down theater in Verona is called "The Globe" (the name of the locale where Shakespeare's plays were originally performed), and the astute viewer will catch visual references to "The Merchant of Verona Beach", "Rozencranzky's", "Wherefore L'Amour", and "Out, Out Damn Spot Cleaners".
Ultimately, no matter how many innovative and unconventional flourishes it applies, the success of any adaptation of a Shakespeare play is determined by two factors: the competence of the director and the ability of the main cast members. Luhrmann, Danes, and DiCaprio place this ROMEO AND JULIET in capable hands. And, while such a loud, brash interpretation may not go down in cinematic history as the definitive version of the play, hopefully it will open a few eyes and widen the audience willing to venture into any movie bearing the credit "based on the play by William Shakespeare."
Now, bring on Kenneth Branagh's HAMLET...
- James Berardinelli e-mail<EMAIL_ADDRESS>ReelViews web site: http://www.cybernex.net/~berardin
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Chrome Browser needs new permissions for version 1.2 - Because we changed our addon domain from better-battlelog.djbrainnrg.at to getbblog.com
how do i do this ?
tx
BrainFooLong
Administrator
If you already use 1.2 and it works - Than you need nothing to do.
Just look at "Tools -> Extensions" and see if BBLog is enabled.
If not, re-enable it.
For some users a popup appers which inform you from new permissions, you must accept.
Greetz
Topicstarter
Guest
Heya !
Thanks for the quick reply, im using 1.2 and chrome version 17.0.963.46 but youtube and images posted on the platoons page dont appear...I can see the link but thats it. Any fix for this ?
Tx,
tycho
BrainFooLong
Administrator
No, youtube and image links only transformed in platoon/profile presentation and board posts.
No support for feeds or any other, for performance and layout reason.


An English singer, songwriter, guitarist, record producer, and actor. Find out more!
GalleryDebut album of a street performer.
The second album which brought Ed to a higher level of popularity thanks to "Thinking out loud".
His latest album released after a break from social networks. He even went on a trip only for making it.
Awesome music coming soon.


This chapter is about getting the information off my Sonken Karaoke DVD so that I can start writing programs to play the songs. It is not directly involved in playing sound under Linux and can be skipped.
I have two Karaoke players, a Sonken MD-388 and a Malata MDVD-6619. Between the two of them they have all the features I think I need from Karaoke players. These are
The Malata is really good in that it shows the notes of the melody and also shows the notes that you are singing. But it has a pathetic range of English songs and doesn't show the Pinyin for the Chinese songs. The Songen has a good selection of both and shows the Pinyin, but doesn't show the notes and has a simplistic scoring system.
So I want to take the songs off my Sonken DVD and either play them on the Malata or on my PC. Playing them on my PC is preferred because then I am only limited by the programs that I can write and am not so dependent on the vendor's machines. So my immediate goal is to get the songs off the Sonken DVD and start playing them in the ways that I want.
The files on the Sonken DVD are in DKD format. This is an undocumented format probably standing for Digital Karaoke Disk. Many people have worked on this format, and there has been much discussion in forums such as the Karaoke Engineering. These include Understanding the HOTDOG files on DVD of California electronics , Decoding JBK 6628 DVD Karaoke Disc and Karaoke Huyndai 99 .
When I started looking at my disk, I went about it in a different direction to many of the posters in these forums. Also, the results in the forums were presented in an adhoc and often confusing manner - as could be expected. So I ended up re-inventing a lot of what had already been discovered, as well as coming up with some new stuff.
In hindsight, I could have saved myself weeks of work if I had paid proper attention to what was said in the forums. So this chapter is my attempt to lay out the results in a simple and logical enough way so that people trying to do similar things with their own disks can easily work out what is applicable to their situation and what is different.
What this chapter will cover is
This section is not complete, as there is still more to be discovered.
Isn't it illegal to copy your DVDs? Not in Australia, under the right conditions ( Copyright Amendment Act 2006 - FAQs):
Will I be able to copy my music collection onto my iPod?
Yes. You can format-shift music that you own to devices such as an MP3 player, X-Box 360 or your computer.
I am just copying the music I legally bought with the Sonken DVD to my computer for personal use. That is within the revised Australian copyright act. You should check if your country allows the same rights.
Don't ask for any copies of the files off my DVD. That would be illegal, and I'm not going to do it.
My Sonken DVD disk contains these files:
BACK01.MPG
DTSMUS00.DKD
DTSMUS01.DKD
DTSMUS02.DKD
DTSMUS03.DKD
DTSMUS04.DKD
DTSMUS05.DKD
DTSMUS06.DKD
DTSMUS07.DKD
DTSMUS10.DKD
DTSMUS20.DKD
This is the MP3 file that plays in the background
These are the song files. The number of these depends on how many songs are on the DVD.
No-one has worked out what this file is for yet.
This file contains the list of song number/song title/artist as given in the song book. The song number in this file is one less than the song number in the book.
I'm on a Linux system and I use Linux/Unix utilities and applications. Equivalents exist under other O/S's such as Windows and Apple.
The Unix command strings
lists all the ASCII 8-bit encoded
strings in a file that are at least 4 characters long. Running
this command on all the DVD files shows that DTSMUS20.DKD is the
only one with lots of english-language strings, and these
strings are the song titles on the DVD.
A brief selection is
Come To Me
Come To Me Boy
Condition Of My Heart
Fly To The Sky
Cool Love
Count Down
Cowboy
Crazy
The actual strings that would show on your disk depends of course on the songs on it. You would need some english language titles on it for this to work, of course!
To make further progress you need a binary editor. I use
bvi
. emacs
has a binary editor
mode as well. Search in there for a song title you know is
on the disk. For example, searching for the Beatles "Here Comes The Sun"
shows the block
000AA920 12 D3 88 48 65 72 65 20 43 6F 6D 65 73 20 54 68 ...Here Comes Th
000AA930 65 20 52 61 69 6E 20 41 67 61 69 6E 00 45 75 72 e Rain Again.Eur
000AA940 79 74 68 6D 69 63 73 00 1F 12 D3 89 48 65 72 65 ythmics.....Here
000AA950 20 43 6F 6D 65 73 20 54 68 65 20 53 75 6E 00 42 Comes The Sun.B
000AA960 65 61 74 6C 65 73 00 1B 12 D3 8A 48 65 72 65 20 eatles.....Here
000AA970 46 6F 72 20 59 6F 75 00 46 69 72 65 68 6F 75 73 For You.Firehous
The string "Here Comes The Sun" starts at 0xAA94C followed by a null byte. This is followed at 0xAA95F by the null-terminated "Beatles". Immediately before this is 4 bytes. The length of these two strings (including the null bytes) and the 4 bytes is 0x1F and this is the first of the 4 preceding bytes. So the block consists of a 4-byte header followed by a null-terminated song title followed by a null-terminated artist. Byte 1 is the length of the song information block including the 4 byte header.
Byte 2 of the header block is 0x12. jim75 at Decoding JBK 6628 DVD Karaoke Disc discovered the document JBK_Manual%5B1%5D.doc . In there is a list of country codes:
00 : KOREAN
01 : CHINESE( reserved )
02 : CHINESE
03 : TAIWANESE
04 : JAPANESE
05 : RUSSIAN
06 : THAI
07 : TAIWANESE( reserved )
08 : CHINESE( reserved )
09 : CANTONESE
12 : ENGLISH
13 : VIETNAMESE
14 : PHILIPPINE
15 : TURKEY
16 : SPANISH
17 : INDONESIAN
18 : MALAYSIAN
19 : PORTUGUESE
20 : FRENCH
21 : INDIAN
22 : BRASIL
The Beatle's song has 0x12 in byte 2 of the header and this matches the country codes in the table. This is confirmed by looking at other language files (later).
I've discovered later that the WMA files have their own codes. So far I have seen
83 : CHINESE WMA
92 : ENGLISH WMA
94 : PHILIPPINE WMA
I guess you can see the pattern with the earlier ones!
Bytes 3 and 4 of the header are 0xD389 which is 54153 in decimal. This is one less than the song number in the book (54154). So bytes 3 and 4 are a 16-bit short integer, one less than the song index in the book.
This pattern is repeated throughout the file, so that each record is of this format.
There is a long sequence of bytes near the beginning of the file "01 01 01 01 01 ...". This finishes on my file at 0x9F23. By comparing the index number with those in my song book, I confirm this is the start of the Korean songs, and probably the start of all songs. I haven't found any table giving me this start value.
Checking a number of songs gives me this table:
I can't find the Vietnamese songs, though. There don't seem to any on my disk. My song book is lying! I guess there is some table somewhere giving these start points, but I haven't found it - these were all found by looking at my song book and then in the file.
The end of the block is signalled by a sequence of "FF FF FF FF ..." at 0x136C92.
But there is lots of stuff both before and after the song information block. I don't know what it means.
The first English song in my book is "Gump by Al Wierd", song number 24452. In the table of contents file DTSMUS20.DK this is at 0x9562D (611885). The entry before this is "20 03 3A 04 CE D2 B4 F2 C1 CB D2 BB CD A8 B2 BB CB B5 BB B0 B5 C4 B5 E7 BB B0 B8 F8 C4 E3 00 00". The song code is "3A 04" i.e. 14852 which is song number 14853 (one offset, remember!). When I play that song on my karaoke machine I'm in luck: the first character of the song is "我", which I recognise as the word "I" (in Pinyin: wo3). It's encoding in the file is "CE D2". I've got Chinese input installed on my computer so I can search for this Chinese character.
A Google search for "unicode value of 我" shows me
[RESOLVED] Converting Unicode Character Literal to Uint16 variable ...
www.codeguru.com › ... › C++ (Non Visual C++ Issues)
5 posts - 2 authors - 1 Jul 2011
I've determined that the unicode character '我' has a hex value of
0x6211 by looking it up on the "GNOME Character Map 2.32.1"
and if I do this....
and then looking up 0x6211 on Unicode Search gives gold:
Unicode 6211 (25105)
GB Code CED2 (4650)
Big 5 Code A7DA
CNS Code 1-4A3C
There's the CED2 in the second line as GB Code. So there you go: the character set is GB (probably GB2312 with EUC-CN encoding) with code for 我 as CED2.
Just to make sure: using the table by Mary Ansell at GB Code Table the bytes "CE D2 B4 F2 C1 CB D2 BB CD A8 B2 BB CB B5 BB B0 B5 C4 B5 E7 BB B0 B8 F8 C4 E3" translate into "我 打 了 一 通 ..." which is indeed the song.
I'm not familiar with other language encodings so haven't investigated the Thai, Vietnamese, etc. The Korean seems to be EUC-KR.
The earlier investigations by others have created programs in C or C++. These are generally standalone programs. I would like to build a collection of reusable modules, so I have chosen Java as implementation language.
Java is a good O/O language which supports good design. It includes a Midi player and Midi classes. It supports multiple language encodings so it is easy to switch from, say GB-2312 to Unicode. It has good cross-platform GUI support.
Java doesn't support unsigned integer types. This sucks really badly here since so many data types are unsigned for these programs. Even bytes in Java are signed :-(. Here are some of the tricks :-(.
(byte) n
n = b ≥ 0 ? b : 256 - b
n = ((b1 ≥ 0 ? b1 : 256 - b1) << 8) + (b2 ≥ 0 ? b2 : 256 - b2)
(no joke!)
The song class contains information about a single song and is given here: SongInformation.java
The song table class holds a list of song information objects and is given by SongTable.java
You may need to adjust the constant values in the file-based constructor for this to work properly for you.
A Java program using Swing to allow display and searching of the song titles is SongTableSwing.java
When "play" is selected it will print the song id to standard output for use in a pipeline.
The files DTSMUS00.DKD - DTSMUS07.DKD contain the music files. There are two formats for the music: Microsoft WMA files and MIDI files. In my song books some songs are marked as having a singer. These turn out to be the WMA files. Those without a singer are MIDI files.
The WMA files are just that. The MIDI files are slightly compressed and have to be decoded before they can be played.
Each song block has at the beginning a section containing the lyrics. These are compressed and have to be decoded.
The data for one song forms a record of contiguous bytes. These records are collected into blocks, also contiguous. The blocks are separate. There is a "super block" of pointers to these blocks. Part of the song number is an index into the super block, selecting the block. The rest of the song number is an index of the record in the block.
I came backwards into this and only arrived at understanding what others had accomplished after some time. So in case it helps any others, here is my route.
I used the Unix command strings
to discover the
songs information in DTSMUS10.DKD. On the other files it
didn't seem to produce much. But there were ASCII strings
in these files and
some were repeated. So I wrote a shell pipeline to sort these
strings and count them. The pipeline for one file was
strings DTSMUS05.DKD | sort |uniq -c | sort -n -r |less
This produced results
1229 :^y|
1018 j?wK
843 ]/<
756 Seh
747 Ser
747 _\D+P
674 :^yt
234 IRI$
The results weren't inspiring. But when I looked inside the files to see where "Ser" was occurring, I also saw:
q03C3E230 F6 01 00 00 00 02 00 16 00 57 00 69 00 6E 00 64 .........W.i.n.d
03C3E240 00 6F 00 77 00 73 00 20 00 4D 00 65 00 64 00 69 .o.w.s. .M.e.d.i
03C3E250 00 61 00 20 00 41 00 75 00 64 00 69 00 6F 00 20 .a. .A.u.d.i.o.
03C3E260 00 39 00 00 00 24 00 20 00 34 00 38 00 20 00 6B .9...$. .4.8. .k
03C3E270 00 62 00 70 00 73 00 2C 00 20 00 34 00 34 00 20 .b.p.s.,. .4.4.
03C3E280 00 6B 00 48 00 7A 00 2C 00 20 00 73 00 74 00 65 .k.H.z.,. .s.t.e
03C3E290 00 72 00 65 00 6F 00 20 00 31 00 2D 00 70 00 61 .r.e.o. .1.-.p.a
03C3E2A0 00 73 00 73 00 20 00 43 00 42 00 52 00 00 00 02 .s.s. .C.B.R....
03C3E2B0 00 61 01 91 07 DC B7 B7 A9 CF 11 8E E6 00 C0 0C .a..............
03C3E2C0 20 53 65 72 00 00 00 00 00 00 00 40 9E 69 F8 4D<EMAIL_ADDRESS>Wow! two byte characters!
The strings
command has options to look at e.g. 2-byte
big-endian character strings. The command
strings -e b DTSMUS05.DKD
turned up
IsVBR
DeviceConformanceTemplate
WM/WMADRCPeakReference
WM/WMADRCAverageReference
WMFSDKVersion
<IP_ADDRESS>80
WMFSDKNeeded
<IP_ADDRESS>0
These are all part of the WMA format.
According to Gary Kessler's FILE SIGNATURES TABLE , the signature of a WMA file is given by the header
30 26 B2 75 8E 66 CF 11
A6 D9 00 AA 00 62 CE 6C
and that pattern does occur, with the above strings appearing some time later.
The spec for the ASF/WMA file format is at Advanced Systems Format (ASF) Specification although you are advised not to read it in case you want to do anything open source with such files.
So on that basis I could indentify the start of WMA files. The 4 bytes preceding each WMA file are the length of the file. From that I could find the end of the file, which turned out to be the start of a record for the next record containing some stuff and then the next WMA file.
In these records I could see patterns I couldn't understand, but also from byte 36 on I could see strings like
AIN'T IT FUNNY HOW TIME SLIPS AWAY, Str length: 34
00000000 10 50 41 10 50 49 10 50 4E 10 50 27 10 50 54 10 .PA.PI.PN.P'.PT.
00000010 50 20 11 F1 25 12 71 05 04 61 05 05 51 21 13 01 P ..%.q..a..Q!..
00000020 02 05 91 2B 10 20 48 10 50 4F 10 50 57 13 40 00 ...+<EMAIL_ADDRESS>00000030 12 61 02 12 01 02 04 D1 05 04 51 3B 05 31 05 04 .a........Q;.1..
00000040 C1 29 10 20 50 10 51 45 10 21 28 10 21 1E 10 21 .). P.QE.!(.!..!
00000050 3A 14 F1 05 13 31 02 10 C1 0E 11 A1 58 15 A0 00 :....1......X...
00000060 15 70 00 13 A0 A9 .p....
Can you see "A.I.N.'.T" ( as ".PA.PI.PN.P'.PT")?
But I couldn't figure out what the encoding was or how to find the table of song starts. That's when I was ready to look at the earlier stuff and understand how it applied to me. ( Understanding the HOTDOG files on DVD of California electronics , Decoding JBK 6628 DVD Karaoke Disc and Karaoke Huyndai 99 ).
The file DTSMUS00.DKD starts with a bunch of nulls. At 0x200 it starts to kick in with data. This was identified as the start of a "table of tables" i.e. a superblock. Each entry in this superblock is a 4-byte integer, which turns out to be an index to tables in the data files. The superblock is terminated by a sequence of nulls (for me at 0x5F4) and there are less than 256 indexes in the table.
The value of these superblock entries seems to have changed in different versions. In the JBK disk and also on mine, the values have to be multiplied by 0x800 to give a "virtual offset" in the data files.
To give meaning to this: on my disk at 0x200 is
00000200 00 00 00 01 00 00 08 6C 00 00 0F C1 00 00 17 7A
00000210 00 00 1E 81 00 00 25 21 00 00 2B 8D 00 00 32 B7
So the table values are 0x1, 0x86C, 0xFC1, 0x177A, ... The "virtual addresses" are 0x800, 0x436000 (0x86C * 0x800) and so on. If you go to these addresses, then before the address is a bunch of nulls, and at that address is data.
Why I call them virtual addresses is because there are 8 data files on my DVD and most addresses are larger than any of the files. The files in my case are all<PHONE_NUMBER>L (except the last) bytes. The "obvious" solution works: the file number is address / file size, and the offset into the file is address % file size. You can check this by looking for the nulls before the address of each block.
Each of the tables indexed from the super block is a table of song indexes. Each table contains 4-byte indexes. Each table has at most 0x100 entries, or is terminated by a zero index. Each index is the offset from the table start of the beginning of a song entry.
Given a song number such as 54154 "Here Comes The Sun" we can now find the song entry. Reduce the song number by one to 54153. It is a 16-bit number. The top 8 bits are the index of the song index table in the superblock. The bottom 8 bits are the index of the song entry in the song index table.
Pseudocode:
songNumber = get number for song from DTSMUS20.DKD
superBlockIdx = songNumber >>
indexTableIdx = songNumber & 0xFF
seek(DTSMUS00.DKD, superBlockIdx)
superBlockValue = read 4-byte int from DTSMUS00.DKD
locationIndexTable = superBlockValue * 0x800
fileNumber = locationIndexTable / fileSize
indexTableStart = locationIndexTable % fileSize
entryLocation = indexTableStart + indexTableIdx
seek(fileNumber, entryLocation)
read song entry
Each song entry has a header and is followed by two blocks that I call the information block and the song data block. Each header block has a 2-byte type code and a 2-byte integer length. The type code is either 0x0800 or 0x0000. The code signals the encoding of the song data: 0x0800 is a WMA file while 0x0000 is a MIDI file.
If the type code is 0x0 such as the Beatles "Help!" (song number 51765) then the information block has the length in the header block and starts 12 bytes further in. The song data block immediately follows this.
If the type code is 0x8000 then the information block starts 4 bytes in for the length given in the header. The song block starts on the next 16-byte boundary from the end of the information block.
The song block starts with a 4-byte header which is the length of the song data for all types.
If the song type is 0x8000 then the song data is a WMA file. All songs looked at have a singer included in this file.
If the song type is 0x0 then (from the book) there is no singer in the songs looked at. The file is encoded, and decodes to a MIDI file.
All files have a lyric block followed by a music block. The lyric block is compressed and it has been discovered that this is LZW compression. This decompresses to a set of 4-byte chunks. The first two bytes are characters of the lyric. For 1-byte encodings such as English or Vietnamese, the first byte is one character and the second is either zero or another character (two byts such as "\r\n"). For two byte encodings such as GB-2312, the two bytes form one character.
The next two bytes are the length of time the character string plays for.
Each lyric block starts with strings such as "#0001 @@00@12 @Help Yourself @ @@Tom Jones " The language code is in there as NN in "@00@NN". The song title, writer, singer are clear. (Note: these characters are all 4 bytes apart!). For English it is "12" and so on.
Bytes 0 and 1 of each block are a character in the lyric. Bytes 2 and 3 are the duration of each character. To turn them into MIDI data, the durations have to be turned into start/stop of each character.
My Java program to do this is SongExtracter.java
with support classes LZW.java
SongInformation.java
and Debug.java
To compile these, run
javac SongExtracter.java LZW.java Debug.java SongInformation.java
and run by
java SongExtracter <song number >
The program to convert these MIDI files to Karaoke KAR files is KARConverter.java
The MIDI files extracted from the disk can be played using standard MIDI players such as Timidity. The lyrics are included and the melody line is in MIDI channel one. I've written a batch of Java programs using Swing and also the Java Sound framework which can play and do things to MIDI files. At the same time as playing MIDI files I can also do cool karaoke things like show the lyrics, show the notes that should be played and show progress through the lyrics. I'm still working on those, they will get posted later.
WMA files are "evil." They are based on two Microsoft proprietary formats. The first is the Advanced Systems Format (ASF) file format which describes the "container" for the music data. The second is the codec, Windows Media Audio 9.
The ASF is the primary problem. Microsoft have a published specification. This specification is strongly antagonistic to anything open source. The license states that if you build an implementation based on that specification then you:
And what's more, you are not allowed to begin any new implementation after January 1, 2012 - and it is already May, 2012!
Just to make it a little worse, Microsoft have Patent 6041345 "Active stream format for holding multiple media streams" filed in Mar 7, 1997. The patent appears to cover the same ground as many other such formats which were in existence at the time, so the standing of this patent (were it to be challenged) is not clear. However, it has been used to block the GPL-licensed project VirtualDub from supporting ASF. The status of patenting a file format is a little suspect anyway, but may become a little clearer after Oracle wins or loses its claim to patent the Java API.
The FFmpeg project has nevertheless done a clean-room implementation of ASF, reverse-engineering the file format and not using the ASF specification at all. It has also reverse-engineered the WMA codec. This allows players such as mplayer and VLC to play ASF/WMA files. FFmpeg itself can also convert from ASF/WMA to better formats such as Ogg Vorbis.
There is no Java handler for WMA files, and given the license there is unlikely to be one unless it is based on FFmpeg.
The WMA files that I have extracted from the DVD have the following characteristics:
The Sonken player plays the right channel if no-one is singing into the microphones, but switches to the left channel (effectively muting the lead singer) as soon as someone sings into a microphone. Simple and effective.
The lyrics are still there in the track data as MIDI and can be extracted as before. They can be played by a MIDI player. I have no idea (yet) how to synchronise playing the MIDI and the WMA files.
The resultant MIDI files are not in KAR format. This means that Karaoke players such as pykaraoke may have problems playing them. It is not too hard to convert the files to this format: loop through the sequence, writing or modifying MIDI events as appropriate. The program is not very exciting but is downloadable as KARConverter .
One of the simplest ways to play Karaoke Midi files is by using pykar . Regrettably, the songs ripped fromt he Sonken disk do not play properly - this is a mixture of bugs in pykar and features required which are not supplied. The problems and their solutions follow.
Many Midi files will set the tempo explicitly using the Meta Event Set Tempo, 0x51. These files often do not. Pykar expects a Midi file to include this event, and otherwise defaults to a tempo of zero beats per minute. As might be expected, this trhows out all timing calculations performed by PyKar.
As The Sonic Spot explains, "If no set tempo event is present, 120 beats per minute is assumed" and gives a formula for calculating the appropriate tempo value, which is 60000000/120.
This requires one change to one PyKaraoke file: change
line 190 of pykar.py
from
sele.Tempo = [(0, 0)]
to
self.Tempo = [(0, 500000)]
The file pykdb.py
clains that cp1252
is the default character encoding for Karaoke files,
ans uses a font DejaVuSans.tt
which is
appropriate for displaying such characters.
This encoding adds in various European symbols such as
'á' in the top 128 bits of a byte, in addition
to standard ASCII.
I'm not sure where PyKaraoke got that information from, but it certainly doesn't apply to Chinese Karaoke. I don't know what encodings Chinese, Japanese, Korean, etc use, but my code dumps them out as Unicode UTF-8. A suitable font for Unicode is Cyberbit.ttf. (See the Fonts chapter in my lecture notes on Global Software).
The file pykdb.py
needs the lines
self.KarEncoding = 'cp1252' # Default text encoding in karaoke files self.KarFont = FontData("DejaVuSans.ttf")
changed to
self.KarEncoding = 'utf-8' # Default text encoding in karaoke files self.KarFont = FontData("Cyberbit.ttf")
and a copy of Cyberbit.tt
copied to the directory
/usr/share/pykaraoke/fonts/
.
Some songs on the disk have no MIDI notes, as this is all in a WMA file. The MIDI file only has the lyrics. PyKaraoke only plays upto the last note, which is at zero!. So no lyrics are played.
This chapter has discussed basically a forensics issue: how to get information off a DVD when the format of the files is not known. It doesn't have anything directly to do with playing sound, although it does give me a big source of files that I have already paid for.


Select a Program Below
Stimulates the production of the skin's ‘youthful' cells, Collagen and Elastin, so is perfect if you're looking to treat the signs of ageing. It can also help with signs of inflammation.
Ideal for treating acne-prone skin, Blue Light balances and clarifies the skin, killing the bacteria that causes acne.
This calms the skin. It's perfect for dealing with pigmentation such as age spots and reducing the appearance of broken capillaries.
This is the one for treating sensitive skin. It boosts circulation and lymphatic flow (drains toxins) as well as soothing and comforting the skin.
This treatment is a mix of red and blue light, it is a combination of two kinds of phototherapy, effective in the treatment of acne and repairs acne scars.
Penetrates the skin deeply, speeds up the living tissue metabolism and improves the appearance of fine lines and sagging skin.
This treatment penetrates the deeper layers of the skin to promote healing and skin repair.


Developer Arena
Home
Projects
About
Login
#1
Project Name
Homer Simpson
12 votes
Vote
Project Name
Homer Simpson
12 votes
Vote
Project Name
Homer Simpson
12 votes
Already Voted
Project Name
Homer Simpson
12 votes
Vote
Project Name
Homer Simpson
12 votes
Vote
Project Name
Homer Simpson
12 votes
Vote