Welcome To Program Analyzer
This page gives a summarized view of your program
{{ location }}
Search New Program
Some Key Points
{% for i in context['key_points_1'] %}
{{ i['desc'] }}
{{ i['value'] }}
{% endfor %}


The Resource Editor is a tool created by Geoworks to translate UI elements of an existing GEOS program into another language.
We've made ResEdit usable by non-programmers. Ideally, the only skills one should need to localize an application to a foreign language is knowledge of the source and target languages--the translator shouldn't have to work with the source code. You may wish to give just this piece of documentation to your translator instead of burdening them with a full documentation set.
1 Glossary
2 Getting Started
3 What Needs to be Translated?
4 Creating A Translation File
5 Translating Text
5.1 Translating Via an ASCII File
5.2 Translating With ResEdit
6 Creating a Translated Geode
7 Updating an Executable
8 Testing the Translated Geode
9 Resource Editor Menus
9.1 File Menu
9.2 Edit Menu
9.3 Project Menu
9.4 Filter Menu
9.5 Utilities Menu
9.6 Window Menu
In explaining how to use the Resource Editor, we use some vocabulary to describe certain operations and program constructs.
Make sure that there are two GEOS installations on your computer: one to hold the original-language version, and one for the translated version. These are often referred to as the source directory and destination directory, respectively.
You will need original-language versions of the geodes you will translate. These should reside in a directory under the source directory. Most applications will be in the WORLD directory. The localization file for each geode you'll translate should be in the same directory as its associated geode.
You'll use ResEdit to generate a foreign-language version of the geode. ResEdit will place the translated geode in the destination directory, at the same relative position as the original language version.
For example, you might have source directory D:\GEOS20.NC and destination directory D:\LATIN. Your original-language application, Connect 4, might reside in D:\GEOS20.NC\WORLD\GAMES. You'd need to copy CONNECT_.VM to D:\GEOS20.NC\WORLD\GAMES. When finished with translating, the resulting translated geode, perhaps named Connect IV, would appear in D:\LATIN\WORLD\GAMES.
To specify the locations of the Source directory or the Destination directory, choose the appropriate item from the Project menu. The Destination directory should not be the same directory as the Source directory.
To create a localized version of your applications, you will need to translate only the applications, libraries, and drivers you have created. All Geoworks software will be translated by Geoworks.
Most applications will use GEOS system libraries whose UI is visible from the application. For example, an application which includes spell checking will have a dialog box containing all the information about the spell checking operation which is included from the Spell library. If the Spell library is not translated, that UI will always appear in its original form. Your application will work with the Spell library, whether or not it has been translated.
At this point you are ready to translate geodes into the target language. The following set of steps can be carried out by a non-programmer running the ResEdit tool. Of course, the translator should have a good idea of the geode's function and use.
To begin creating new Translation Files, double click on the "Res Edit" icon in the Tools folder of the WORLD directory of the original-language version of Ensemble 2.0.
This brings up a dialog box which gives you three choices:
Choose the "Create New" option. Another dialog box appears, allowing you to select the localization (.vm) file for the geode you wish to edit.
The first time you start the Resource Editor, it assumes you will be editing geodes in the GEOS20.NC directory, or whatever installation of GEOS you started in. Once you have a Translation File open, you can change the top-level directory by clicking on the "Set source directory" in the Project Menu. This setting is saved in your .ini file, so the next time you start ResEdit, it will automatically set the top-level source directory to what it was when exited.
To create a new Translation File for a geode that is not in the GEOS20 installation (or whichever installation is currently set as the top-level source directory), change the top-level source directory first--because you cannot access the Project menu with no Translation File open, you may need to create a new Translation File and keep it around until you can access the Project menu to change the Source directory.
There are two main approaches to translating a geode's text. Some people prefer to work with an ASCII text file. Others prefer to use ResEdit's graphical interface.
We will discuss both methods.
Choose Other from the File menu; in the submenu that appears, choose Export Document. In the dialog that appears, choose a file location and name for the ASCII Translation File (ATF).
If you have already gone through the translation process once, and only wish the ASCII Translation File to contain entries for those chunks which have been translated, select the Export only changed chunks box.
Press the OK button.
You may now edit the ASCII file to translate strings.
The important lines of the file are of the form:
[keyword ] data
There should always be one space between the keyword and the data. The following keywords appear in the header:
The ASCII Translation File then lists all resources in the geode, by means of [resource ] lines and [endrsrc ] lines. Do not change the text of these lines. If, examining a resource, you realize it contains no chunk entries you wish to change, you may delete it to make it easier to find the resources you do wish to change. To do so, delete the [resource ] line, the [endrsrc ] line, and all lines in between.
Within each resource, there may be one or more chunks containing localizable strings. For each such chunk, there will be five lines:
[chunk ] chunkname [original ] {original text} [localize ] {instructions} max, min, type [translate ] {translated text} [mnemonic ] mnemonic [shortcut ] mods,shortcut
You will leave most of these fields alone, translating only the translated text , mnemonic , mods , and shortcut fields.
@localize
keyword in the source code files.
localize
keyword.
@localize
keyword.[translate ] {moustache: :-{{)}
[shortcut] PC,s
If, for some reason, the question mark were to be a shortcut, it would be represented by
[shortcut ] ,?
Only monikers may have shortcuts. The lack of shortcut is represented by
[shortcut] ,
Be careful when representing the lack of a shortcut: the carriage return or line feed at the end of the line must occur immediately following the comma. If there is an intervening space, ResEdit will think you want to use the space bar as a shortcut key.
If you will not need to translate a chunk, you may delete its entry to make it easier to find the chunks you do wish to translate. Delete the [chunk ] line and the [shortcut ] line and all lines in between.
To convert your ASCII Translation File into a regular Translation File, use ResEdit to import the file: either press the Import button in the dialog that appears when ResEdit starts up, or choose New/Open from the File menu, and then choose Import in the dialog that appears. In the dialog that appears, show ResEdit the location of both the ASCII Translation File and the Localization (.vm) File.
Press the OK button.
If your original-language geode has changed since the ASCII Translation File was created, ResEdit may present a warning dialog box at this point. Assuming the geode hasn't changed too much, it's probably safe to use the ASCII Translation File anyway. If you're hesitant, you can abort the import. You might then want to export another ASCII Translation File from the newer version of the geode.
After selecting a localization (.vm) file to translate, the Resource Editor will then load the information from this file and the corresponding geode into an untitled Translation File saved into the DOCUMENT directory. The file will be displayed in two views. The left portion of the screen is the Source File, while the right portion is the Translation File. When the file is first opened, the two sides look the same, since no translations have yet been made.
The Resource Editor brings up all the strings or bitmaps which need to be translated, regardless of their context. The only way you will be able to be completely sure that the translation is accurate is to perform the translation and then actually run the translated executable (to be discussed later) and see how the translations appear in the program.
Click on any text string in the right portion of the screen. The blinking text editing cursor should appear, and you will be able to edit the text in the right screen to reflect the changes necessary for the local language. The text in the left portion of the screen acts as a guide and will not change.
At the bottom of the main screen, there are three fields which may have important information about how you should translate the selected chunk.
If there is nothing in these fields, there are no constraints on the size or content of the translation.
This is the character the user will use when navigating the translated geode's UI with keyboard navigation. Only Text Monikers may have mnemonics. The mnemonic should be either a character which occurs in the moniker, the keyword ESC or the keyword NIL (which signals that there is no mnemonic).
You must be careful not to assign the same mnemonic to two monikers whose gadgets are both in the active window at the same time. If there is such a conflict, only one of the two gadgets will be activated by this mnemonic. When you have created the translated executable, you should check that there are no conflicting mnemonics, and change any which are found to overlap with others at the same level.
To choose a different mnemonic, use the Mnemonic gadget in the upper-right area of the ResEdit window. Use the up- or down- buttons to choose a letter from the text moniker, or type in your letter of choice. If you choose a letter which does not occur in the text moniker, it will appear in parentheses.
Keyboard shortcuts, also known as keyboard accelerators, are key combinations which may be used to activate a piece of UI gadgetry. For instance, Ctrl-S is a common keyboard shortcut for activating the Save item under the File menu.
In ResEdit, keyboard shortcuts are displayed when there is a chunk of type Object that has a shortcut. The shortcut will appear as something like "(Physical Ctrl p)".
To translate the shortcut, press the Shortcut... button at the top center of the ResEdit window. This will bring up a dialog box allowing you to specify that there should be no shortcut, or to specify a keyboard combination for a translated shortcut.
The following modifier keys are available: Alt, Shift, Ctrl. The Physical option specifies that Num Lock and Caps Lock states are disregarded when matching the shortcut character.
You may wish to translate a graphic. For example, a calendar application written for an English-speaking audience might have an icon depicting a desk calendar displaying the date "Apr 7"--but in a foreign language, "Apr" might not be anything a customer would see on a calendar.
To translate a graphic:
ResEdit will display the chunks of one resource at a time. To translate all the chunks in a geode, you'll need to work with chunks from several resources.
There are several ways to choose a different resource.
Within a resource, there are several ways to select a chunk to edit.
After all of the chunks and resources in the selected .vm file have been translated and saved in a Translation File, a new local-language executable can be created in the target installation.
The first step to placing the new executable in the correct place is making sure that the localization target kit has been placed in another directory on your hard drive, for example C:\ESPANOL.
Then select the Destination directory option from the Project menu. It will ask you to choose the top level GEOS directory that will hold the modified executables. In this case, you would choose the C: drive from the Drives list, and choose \ESPANOL in the scrolling list of directories.
You need not have a full GEOS installation in the target directory. However, when new executables are created, they are placed into the same subdirectory as the original geode. For example, if you were to translate GeoWrite, which is in the WORLD directory, and you had the destination directory set to ESPANOL, the directory ESPANOL\WORLD must exist when you try to create the new executable. If it doesn't, then you will get an error message saying that the target could not be created.
To create the translated geode, choose Create New Executable... from the File menu.
This new geode will have the identical original-language long name as the original geode (unless you have changed the name in the File Menu's New Name and User Notes dialog). You may wish to rename several of the geodes, especially those in the WORLD directory and the Screen Savers, to reflect local-language names.If you change the name, the new geode will not overwrite the original one, and you will have to go back and delete the old one to avoid duplicates.
Even after all the translations are complete, there may be a need to replace a certain executable with a newer version containing a bug fix or a feature enhancement. You will be able to do this quickly and effectively by using the Update feature in the File menu.
To make this feature work, you must first put the updated geode and .vm file in the proper source directory, overwriting the original files. Then, by clicking Update Translation File (in the Update submenu of the File menu), the existing Translation File will be compared with the new strings in the geode, showing the new or changed chunks, as well as the ones left unchanged. The deleted chunks will be grouped in a separate resource named "Deleted chunks" at the end of the resource list. You will then be able to make the necessary modifications to this file to bring it up to date with the newest version of the geode.
If the name of the original-language geode has changed, you will need to use the Update Geode Name function (in the Update submenu of the File menu) to tell ResEdit about the new name.
After updating the Translation File, you can then create an updated local-language executable as out lined above.
If there have been no changes to the geode that affect editable chunks (as when code changes for a bug fix), it is also possible to simply rebuild the new geode from the existing Translation File by choosing Create A New Executable from the File menu.
After viewing the updated Translation File and making any necessary changes, you can remove the updating information from the Translation File by choosing Commit the Update trigger from the File/Update menu. This will remove information which marks the chunks as "new" or "changed" as well as remove the Deleted Chunks resource.
You may wish to be able to test your translations as soon as you make them. At any point during a translation, you can create an executable, as described in Creating a Translated Geode .
Change directory to your Destination directory (e.g., \ESPANOL) start that installation, and test your new geode.
If your product will run under several video drivers (e.g., if it runs on desktop PCs), we suggest that you take a look at the localized UI under the CGA video driver to make sure that everything fits. You should also observe it under the EGA video mode with a large UI font size.
The quick overview of the menu items below should give you the necessary information to use all of the features.
The items in this menu keep track of how your project is organized.
Each of the "Don't show ..." menu items in the Filter menu is a radio button which allows you to turn on or off a filter. By turning on a filter, you ask that ResEdit not show chunks of a certain type. These options can be helpful when editing updated Translation Files, making it easier to find those items you want to work with.
Each of the "Show ..." menu items is a radio button which allows you to view specific chunks affected by updating the Translation File. At most one of these may be selected at a time. To show all chunks, make sure that none of these menu items are selected--choose the selected item to un-select it.
The first four of these menu items allow for quick movement between chunks and resources:
The last item provides a count of words in the original-language geode. It provides a count both of the total number of words and of the number of unique words (i.e., not counting repeated words):
These menu items make manipulation of multiple Translation Files easy, by opening overlapping windows or tiling active windows.


The edit view is the main view of the Edit application mode. This view offers a flexible interface to view and edit plugin files.
The edit view currently offers two panes, which each allow you to have any number of tabs. In the future you will be able to split panes arbitrarily, and move tabs between panes.
You can create a tab by clicking the + button. You can close a tab by clicking the X button.
Tabs can display one of the following views:


Current Orientation:
alpha:
If you can see this,
beta:
this function
gamma:
is not supported
Gives you the current device orientation. VALUES - Alpha: 0-360, Beta: 0-180, Gamma: 0-90


Blogging with pkgdown?
Last knit: 2023-08-04
NOTE: I stopped using pkgdown for bloggin and switched to quarto, which is much better suited to the task.
I like pkgdown. It’s great for what it was built to do (make websites for R packages), and it’s pretty good at other use cases as well. For example, I recently re-factored my lab webpage using pkgdown and that worked out well enough.
My previous website had a hacked together blog using demented combinations of R markdown templates. I was thinking about adopting some other blogging scheme like distill, but couldn’t get it to play nice with pkgdown. So, this is an attempt to blog in pkgdown and see how far that goes for me.
Blogging features I’m looking for
Here’s of list of features I think I want for blogging. Making this list should help me figure out whether or not I can implement them in pkgdown.
- Have an index page that lists all of the blog posts, and that is auto-magically generated from the blog posts
- Have a “make_post()” type of function that makes a template for a new post all ready to go, and saved in the folder where it needs to be.
- Have the posts be searchable in pkgdown
- Have the posts use the same site-wide navigation as the rest of the site.
Implementing the blog in pkgdown
I think I can do most of what I want with pkgdown vignettes. One minor detail is that I’m not sure how easy it will be to customize the index page listing all of the blog posts. It would be nice to have a picture for each blog post, but that might not be an option without some meddling. Oh well. I’ll use the rest of this post to leave breadcrumbs for my future self on a blogging workflow.
Make a blog folder in vignettes
Pkgdown automatically renders .Rmd files in the vignettes folder. I already have the main pages of the website in vignettes, so I’ll make a separate folder called vignettes/blog
to hold all of the blog posts.
Post workflow
I need to make some decisions here. Should I put individual vignettes in the blog folder, or should I make subdirectories for each post. What are the naming conventions?
This kind of structure might work. But, I need to check how the posts are rendered to the articles page.
vignettes/blog
├── post_4_1_22_older_post
│ └── post_4_1_22_older_post.Rmd
└── post_5_17_22_blogging
└── post_5_17_22_blogging.Rmd
Compiling the posts using build_articles()
pkgdown::build_articles()
will compile all of the .Rmds in the vignettes folder. The blog posts are in there, so they will be compiled to.
The same function also creates an index.html
for the knitted vignettes. My plan is to use that page to list only blog posts, and not any other pages I have in the vignettes folder. This can be accomplished through _pkgdown.yml
.
For example, the following creates some sections on the index.html, and uses starts_with()
to loop through folders that start with post
in the blog
folder.
articles:
- title: Newer Posts
desc: Trying out blogging with pkgdown.
navbar: ~
contents:
- starts_with("blog/post")
- title: Older Posts
desc: Need to add links to older stuff here...
navbar: ~
Ordering posts from newest to oldest
If I adopt the above naming convention post_M_D_Y_title
, then posts get listed from oldest to newest on the index page. Need to flip that.
It seems like I would just need to sort the order of posts somehow, but I couldn’t figure that out.
I could use a naming convention with a number that gets smaller for every new post post_number_M_D_Y_title
. That’s mildly annoying, but probably what I will do for now. Another option would be to override the _pkgdown.yml while running build_articles()
. But this would require writing an alternative yml that lists the contents in a preferred order. That seems like too much work.
Decision was to start at 999, and count down. I probably won’t get to 0, and if I do, well that’s on me.
vignettes/blog
├── post_998_5_17_22_blogging
│ └── post_998_5_17_22_blogging.Rmd
└── post_999_3_1_22_older_post
└── post_999_3_1_22_older_post.Rmd
helper functions
Not sure that I need any helper functions. I was thinking about creating a make_post
function in the spirit of usethis:use_vignette()
. Maybe I’ll try that later. For now it wouldn’t be too bad to just copy/paste and reword stuff from a previous blog post.
Custom stuff
I have a bunch of older blog pieces. I should consider migrating them over. Before I do that I should at least link to them.
I had fun adding banners to other pages on my lab website, and I would like to add a banner to the articles index.html to spice things up. Not sure yet how to do this…maybe an override with includes before body or something. I tried an override, but the outcome wasn’t pretty.
Next up is to hack the template. Looks like I need to make a template off of content-article-index.html
.
- Make
inst/pkgdown/BS5/templates
- copy in
content-article-index.html
from pkgdown templates - create a dummy R package for this repo, it’s called crumplab
- list crumplab as package in template yml listing in
_pkgdown.yml
- mod
content-article-index.html
and add my images etc.
It worked I think. Note to self that the package needs to be rebuilt in order for any changes to the templates to take effect.
Issues
I want to add unique twitter cards to the articles/index.html
page, and to individual posts. I thought this would be easy, because pkgdown
makes it easy to add twitter cards for each vignette. However, it seems that any other cards are added on a site-wide basis, and defined in _pkgdown.yml
. Additionally, it’s not clear how to set individual cards for pages like articles/index.html
.
Solution was to write a custom version of pkgdown::build_article_index()
that allowed to the override to be applied only to articles/index.html
, and not to any the blog posts. A nice side effect was that I was planning to add some functions to a lab R package, so now I can put those in the R package for the crumplab website.
Extra bits
So far I’m pretty happy with this approach to blogging. But, I’m sure there’s a bunch of things that will come up as I try to process out even more. I’m going to use the space to make breadcrumbs for myself to solve little blogging problems that I stumble across.
Drafting a post without publishing
What are some options for drafting a post and choosing when to publish it.
- Make a new post on my local computer and don’t push it to Github.
- Add to
.Rbuildignore
, but this wouldn’t allow a preview? - Or, add new posts to a
blog/drafts
folder. This should build the post, but it won’t be linked to on the blog page. If someone knew the URL it would still be visible on the internet, if pushed to github.


Class: Aws::WAFV2::Types::ManagedProductDescriptor
| Relationships & Source Files | |
| Super Chains via Extension / Inclusion / Inheritance | |
|
Class Chain:
self,
Struct
|
|
|
Instance Chain:
self,
::Aws::Structure ,
Struct
|
|
| Inherits: |
Struct
|
| Defined in: | gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb |
Overview
The properties of a managed product, such as an Amazon Web Services Managed Rules rule group or an Amazon Web Services Marketplace managed rule group.
Constant Summary
Instance Attribute Summary
-
#is_advanced_managed_rule_set ⇒ Boolean
rw
Indicates whether the rule group provides an advanced set of protections, such as the the Amazon Web Services Managed Rules rule groups that are used for
::Aws::WAF
intelligent threat mitigation. -
#is_versioning_supported ⇒ Boolean
rw
Indicates whether the rule group is versioned.
-
#managed_rule_set_name ⇒ String
rw
The name of the managed rule group.
-
#product_description ⇒ String
rw
A short description of the managed rule group.
-
#product_id ⇒ String
rw
A unique identifier for the rule group.
-
#product_link ⇒ String
rw
For Amazon Web Services Marketplace managed rule groups only, the link to the rule group product page.
-
#product_title ⇒ String
rw
The display name for the managed rule group.
-
#sns_topic_arn ⇒ String
rw
The Amazon resource name (ARN) of the Amazon Simple Notification Service
::Aws::SNS
topic that's used to provide notification of changes to the managed rule group. -
#vendor_name ⇒ String
rw
The name of the managed rule group vendor.
Instance Method Summary
::Aws::Structure
- Included
| #to_hash | Alias for Structure#to_h. |
Instance Attribute Details
#is_advanced_managed_rule_set ⇒ Boolean
(rw)
Indicates whether the rule group provides an advanced set of
protections, such as the the Amazon Web Services Managed Rules rule
groups that are used for ::Aws::WAF
intelligent threat mitigation.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#is_versioning_supported ⇒ Boolean
(rw)
Indicates whether the rule group is versioned.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#managed_rule_set_name ⇒ String
(rw)
The name of the managed rule group. For example,
AWSManagedRulesAnonymousIpList
or AWSManagedRulesATPRuleSet
.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#product_description ⇒ String
(rw)
A short description of the managed rule group.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#product_id ⇒ String
(rw)
A unique identifier for the rule group. This ID is returned in the responses to create and list commands. You provide it to operations like update and delete.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#product_link ⇒ String
(rw)
For Amazon Web Services Marketplace managed rule groups only, the link to the rule group product page.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#product_title ⇒ String
(rw)
The display name for the managed rule group. For example, Anonymous
IP list
or Account takeover prevention
.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#sns_topic_arn ⇒ String
(rw)
The Amazon resource name (ARN) of the Amazon Simple Notification
Service SNS topic that's used to provide notification of changes to
the managed rule group. You can subscribe to the ::Aws::SNS
topic to
receive notifications when the managed rule group is modified, such
as for new versions and for version expiration. For more
information, see the Amazon Simple Notification Service Developer
Guide.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end
#vendor_name ⇒ String
(rw)
The name of the managed rule group vendor. You use this, along with the rule group name, to identify a rule group.
# File 'gems/aws-sdk-wafv2/lib/aws-sdk-wafv2/types.rb', line 4946
class ManagedProductDescriptor < Struct.new( :vendor_name, :managed_rule_set_name, :product_id, :product_link, :product_title, :product_description, :sns_topic_arn, :is_versioning_supported, :is_advanced_managed_rule_set) SENSITIVE = [] include Aws::Structure end


Addition of
2
-Digit Numbers
|
Let Us Learn
In adding 2-digit numbers, write first the addends in columns.
The answer to
45
+
2
is 47.
Now, add these 2-digit numbers: 23 and 46.
The sum of 23 and 46 is 69.
Let Us Try
A.
Read each addition sentence. Find the sum.
Write it in the box.
B.
Read each addition sentence. Write the sum in the cone.
Let Us Practice
A.
Read each addition sentence. Find the sum. Draw a
string to connect each balloon to the box with the
correct answer. The first one has been done for you.
B.
Read each addition sentence. Circle (
) the correct sum.
.


YO BOB GOES TO THE MOVIES
This weekÕs question: how is it possible for a film to be both tongue-in-cheek _and_ completely devoid of irony?
I didnÕt mean to see _Blade_. IÕd heard the basic elements--Wesley Snipes, vampires--and wasnÕt especially intrigued. Snipes hasnÕt been particularly watchable since _Jungle Fever_ (okay, it took chutzpah to do _To Wong Foo..._, but any connoisseur of drag queen road movies will tell you what an inferior product that was), and I doubted another superhero flick would reverse the downhill trend. Earlier that day IÕd finally gotten around to watching Robert AltmanÕs great film _Short Cuts_ on video, and when my friends Josh and Paul suggested going to see _54_, it sounded like a suitable follow-up. At the theater, unfortunately, we discovered that _54_ wasnÕt starting until the next day. Wesley won out over Drew Barrymore and _Air Bud 2_.
_Blade_ is the polar opposite of _Short Cuts_. The latter is an intelligent, original film, hilarious and sad and subtle, one of AltmanÕs clear triumphs. It is also rife with irony. _Blade_ shares none of these qualities, except perhaps hilarity. I did laugh, but IÕm still not sure how much of that was intended by the filmmakers.
Two of the two-and-a-half stars I give this movie belong to the first five minutes of screentime, a knockout opening sequence that ranks with the best filmed imagery of vampires IÕve ever seen. Two of the two-and-a-half stars I _didnÕt_ give were out of pique at the movieÕs failure to live up to its promise. It just isnÕt fair for a sequence that strong to give way to such an unrelenting schlockfest.
It must be said that none of the principal actors are onscreen in the first five minutes. Night in the city: a girl leads a guy through a meat locker into an underground techno club that turns out to be chock-full of raving bloodsuckers. They turn on him. I was surprised to feel real fear when it happened--surprised because, like most good consumers of pop culture, IÕve been saturated with vampire clichˇs courtesy of Brad Pitt, Gary Oldman (note: CoppolaÕs _Dracula_ remains the worst of the genre) and Sarah Michelle Gellar. ItÕs rare these days that a horror film possesses the ability, nevermind the courage, to actually horrify. But _Blade_ does, for a few titillating moments.
And then, dammit, Wesley Snipes shows up lookinÕ all chocolate cheesecake, wearing complicated latex and wielding a sword that turns vampires into sizzling yellow skeletons. HeÕs Blade, heÕs one bad mother (shutcho mouth!) and no one understands him but Whistler, a shaggy, squinty-eyed redneck played by Kris Kristofferson. Together they battle the undead establishment with garlic-filled silver bullets and UV flashlights. When an attractive doctor gets bitten, Blade takes her to their bunker and injects her with liquid garlic to save her, because, well, sheÕs an attractive doctor. Not that he has time for so much as a peck on the cheek between slaughtering his mortal enemies.
In other words, _Blade_ becomes another superhero flick, a crashing, blaring assault designed for maximum appeal to its target demographic. No MTV-approved trend is left unfondled. The music is cold electronica, the violence is close-up gore, and every opportunity to substitute cheesy computer graphics for live action is exploited. While no one actually has sex, the movieÕs approach to the concept of evil is positively pornographic: that is to say, blunt, obvious, manipulative and shallow.
So much about _Blade_ is ridiculously contrived that _The Shadow_ seems Altmanesque in comparison. Why is the librarian vampire an enormous, Hutt-like slug creature? How does the attractive doctor survive being tossed from one skyscraper to the roof of another, several stories below, with nary a scratch? Why does the serum...
Okay, nevermind. ItÕs supposed to be over-the-top fun, not a homework assignment. And it doesnÕt take extraordinary intelligence to see that a lot of _Blade_ is played for laughs, not chills.  I would have swallowed this nonsense as simple lowbrow comedy if I hadnÕt caught Snipes and Stephen Dorff (a fine actor, here slumming as the arch-vamp) trying to squeeze actual emotion from the rubber duckies of their roles. This movie has no clue where to go, and further insults us by spreading its legs for a sequel. If _Blade II_ ever sees production, pray for us all.
You want a good vampire movie? See _Near Dark_ or _The Addiction_.
You want a supernatural comedy that works? Watch _Ghostbusters_ or _Army of Darkness_ again.
Just donÕt subject yourself to this miserable exercise in hara-kiri.
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


---
title: "Quirks"
layout: default
menu: |
---
Quirks
This file is mirrored from the libtw2 documentation and is dual-licensed under MIT or APACHE.
- Huffman compression has an extra byte if the actual end is at a byte boundary.
- The size field has a weird splitting in the chunk header.
- The ack field of the packet header is 12 instead of 10 bit wide.
- The sequence field of the chunk header has overlapping bits.
- The client doesn't care about the actual lengths of the snapshot chunks, it'll always pad to
MAX_SNAPSHOT_PADSIZE
.
- The client wants to receive the last snapshot part last, otherwise the resulting delta is too long.
- CCharacterCore has unused fields
m_HookDx
, m_HookDy


Spherical Voronoi Diagram
Click on the sphere to calculate a
[unweighted/weighted]
spherical Voronoi diagram.
[Go fullscreen]
[Exit fullscreen]


Advanced Elements
Select2
The jQuery replacement for select boxes.
Date Range Picker
Component for choosing date ranges, dates and times.
Date Time Picker
Date and time picker designed to integrate into your Bootstrap project.
Input Masks
jQuery Plugin to make masks on form fields.
e.g "DD/MM/YYYY"
e.g "HH:MM:SS"
e.g "DD/MM/YYYY HH:MM:SS"
e.g "xxxxx-xxx"
e.g "x-xx-xx-xx"
e.g "Your money"
e.g "#.##0,00"
e.g "xxxx-xxxx"
e.g "(xx) xxxx-xxxx"
e.g "(xxx) xxx-xxxx"
e.g "(xx) xxxxx-xxxx"
e.g "xxx.xxx.xxxx-xx"
e.g "xx.xxx.xxx/xxxx-xx"
e.g "xxx.xxx.xxx.xxx"


| Saret SR-512 General Information
-
| Synonyms: |
Hydroxyethylethylene urea; 1-(2-hydroxyethyl)imidazolidin-2-one |
| Molecular Formula: |
C5H10N2O2 |
| CAS Registry No.: |
3699-54-5 |
| Chemical Category: |
Others |
Usage and Performance Characteristics
-
| Manufacturer: |
SARTOMER Company |
| Used for Products: |
Sealants, paints, inks |
Physical Properties
-
| Specific Gravity: |
1.22 (20°C) |
Chemical Properties
Optical Properties
-
| Color, Platinum-Cobalt Scale: |
45 |
Hazard-Related Data
-
| OSHA Hazard Class: |
Not considered a hazardous substance |
| Autoignition Temperature, °C: |
246 |
| Eye Irritation (human): |
May cause irritation |
| Flash Point Temperature, °C: |
190 |
| HMIS Personal protection: |
Chemical splash goggles, face protection, gloves, apron |
| Skin Irritation: |
May cause irritation |
Environmental Parameters
-
| Theoretical Oxygen Demand, ThOD, g/g: |
2.21 |
Plasticizers Database (2nd Electronic Edition) Copyright © 2004 by ChemTec Publishing |


{% include 'head.html' %}
{% include 'header.html' %}
Executive vote:
{{ title }}
Top supporters:
Voting history
:
Time
Address
Operation
Vote
Deci-
sive
Approval
(MKR)
Hat


BETSY'S WEDDING A film review by Randy Parker Copyright 1996 Randy Parker
RATING: ***1/2 (out of ****)
(Review written in 1990)
One of my colleagues was surprised when I told her I was willing to see BETSY'S WEDDING. And she was shocked to hear that I actually liked it. Her reaction was understandable when you consider that the film revolves around Molly Ringwald, who hasn't made a worthwhile film since 1986. But the fact is, BETSY'S WEDDING is also an Alan Alda film. And while Ringwald has been making duds for the last four years, Alda has been involved with several noteworthy projects, including CRIMES AND MISDEMEANORS and A NEW LIFE.
Written and directed by Alda, BETSY'S WEDDING is a vibrant slice-of-life, mixing a few dramatic moments into a big bowl of whimsical humor. Alda's comic elixir is smooth and refreshing--and a welcome change of pace from the usual summer fare.
As bride and groom, Molly Ringwald and Dylan Walsh are the pivotal characters in the film, but they are by far the least interesting. Walsh is a nonentity, with all the screen presence of a door knob. Ringwald is simply unbearable and is easily the weakest link in the chain. She looks hideous with her short-cropped orange hair, red lip-stick and grotesque outfits. She's supposed to be a dress designer, but she looks more like a clown. And to make matters worse, Ringwald's performance matches her appearance.
Thankfully, Alda keeps Ringwald's screen time to a minimum; he is far more interested in the colorful periphery characters. The wedding is just a device to bring together the bride's working-class, Italian family and the groom's rich, gentile family. Ringwald's folks are homey and down-to-earth, with Alda as her free-spirited father, Madeline Kahn as her practical mother, and Ally Sheedy as her lonely sister. Walsh's clan, on the other hand, is prim, proper and ostentatious. When the two families meet and mingle, the movie becomes a story of culture clash, or as one character puts it, "money versus values."
Ally Sheedy, in a wonderfully understated performance, is one of the film's most pleasant surprises. Sheedy expresses more with just her eyes than Ringwald does with her entire body. It's Anthony LaPaglia, however, who seizes the spotlight. LaPaglia plays Stevie Dee, a suave, overly polite mafioso who is formally courting Sheedy with old-fashioned chivalry. LaPaglia's sincere but dim-witted character is a riot. And what's uncanny is that LaPaglia is a dead ringer for Robert De Niro, with a little bit of Alec Baldwin thrown in for good measure. LaPaglia seems to have attended the De Niro school of gangster acting, and his inspired performance is partly a tribute to his role-model and partly a rip-off. I don't know whether to say a star is born or a star is re-born, but I do know that LaPaglia's over-the-top performance should not be missed.
The scrumptious comic acting, however, extends well beyond Sheedy and LaPaglia. Joe Pesci, in particular, sinks his teeth into his role as Alda's unscrupulous brother-in-law, a slum lord with mob ties, who is cheating on his wife (Catherine O'Hara). Alda, faced with challenge of both directing and acting, somehow finds just the right comic touch as the bride's financially-strapped father, a carpenter whose dreams are bigger than his wallet. The film adopts Alda's psychological point of view as he tries to one: plan the wedding, and two: pay for it.
As a filmmaker, Alda's style of humor is remarkably restrained and tasteful. And while he doesn't have the comic genius of a Woody Allen, Alda does possess the inspiration to make movies which are ten times more entertaining than the slop which usually passes for comedy.
~~~~~~~~~~ Randy Parker http://www.shoestring.org --> "1,000 Voices In The Dark" --> Weekly Movie Reviews & Interviews
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


I am a software developer from the Czech Republic, currently studying for a Bachelor’s degree in Applied Mathematics I am also working for a software company RTsoft s.r.o. in Pilsen. My passion lies in mathematics, especially mathematical analysis, which improves my ability to solve complex algorithmization problems. My approach involves using intuition hand in hand with careful analysis of a given task. I am a perfectionist with a strong enthusiasm for pinpointing the best solutions for non-trivial problems.


We're sorry but gyakutter doesn't work properly without JavaScript enabled. Please enable it to continue.


The directory index pages combine an automatically generated file index and a manually written README file describing the contents of the directory. The automatic index section reflects reality, but may also contain files/directories that are obsolete. The README section is more informative, but can at times be out-of-date.
There is also an HTML rendering of the source code, with syntax highlighting and hyperlinks from uses to definitions. (See the notes on the conversion tool.)


- Google
- GeoServer as overlay
- GeoServer as transparent_overlay
- GeoServer as base layer
- GeoServer using GWC and gmap service
- GeoServer base layer with google layer
- Google lat/lng on click event
- OpenLayers
- OpenLayers Basic Map
- OpenLayers GeoRSS
- Leaflet
- Leaflet Basic Map


After taking the Gregoric Thinking Style quiz, I have identified that I am a Concrete Sequential thinking style. Attributes of someone with this thinking style include: Likes
I completely agree with the description of my thinking style. I am very much grounded in reality and work best in a clean and structured environment. With that being said, my biggest challenges come from my inability to be creative and think outside of the box. I had struggles with designing my website because I couldn't think of ways to make it prettier or how to design it. I know a lot of my inability to think outside of the box and be creative has been a result of a fixed mindset. I'm perpetuating the cycle of my inability to imagine by constantly closing myself out and shutting myself down whenever the opportunity to be creative prevails. The Growth vs. Fixed mindset reading illuminated the importance of me being open to trying new things and allowing myself to dabble into being creative and accept my failures as opportunities for growth.


Tu/Th: 11:00am - 12:15pm, CSI 1122
All concepts will be covered in class lecture, and in the lecture notes.


The patient selects an available time slot and books an appointment. The provider gets notified instantly and the patient gets appointment reminders by email and text.
Get discovered by patients
Based on Insurance, your consultation time, distance from you etc.
With Tele-Visit for the COVID-19 & old age patients.
With reduction in no-shows and cancellations with reminders.
With reviews that speak for you.
Smart referral grid
Refer your patients with instant appointment set up with specialist.
Paperless transaction through digital communications and EHR integration.
Get referrals to fill your available slots.
Your virtual front office
Discover the discovery grid. Make your profile discoverable amongst 331,288,117 patients instantly. Do not miss a single potential patient. Fill all your available slots almost instantly.
Get rid of the traditional phone tagging. Sign up DocsTime for free. Forget the hassles of phone and fax forever. Let the AI empowered mobile application manage your E-Referrals. Choose from 3 million providers to refer. You focus on what really matters – "The Patients".
Simplify administration. Make use of smart calendars. Also, engage your patients with automated communication. Send reminders via E-Mail, SMS and messengers. Hence, let your office focus on what really matters – "Personalized human attention."


Find Your Character
The answers to these questions could reveal your true calling:
Your name:
In new social situations (meeting people or groups of people for the first time), do you usually do more:
Talking
Listening
When it comes to reading, do you:
Enjoy reading various kinds of books on subjects you find interesting.
Tolerate reading if you have to but prefer learning other ways.
When a friend comes to you with a personal problem, are you better at:
Comforting them
Helping them logically solve their problem
Are you naturally better at ...
Planning ahead and sticking to your plan.
Improvising based on changing circumstances.
Submit
Your character:


Edit your sheet here. You can edit per note unit.
milliseconds.
Your global actions are here. Left hand side is your 35 time units game player.
Play Play slower Stop
Upload Export Import Clear


We all know the term “Don’t judge a book by it’s cover” very well, yet there are those who still don’t follow this practice. This relates to my main focus, which is about assuming instead of understanding the truth. So, why is this being addressed in the first place? What is so urgent about it that it needs to be discussed in this post or article? Sadly, basing on assumptions is something many do, especially our generation today. This can create false rumors and create a misunderstanding. This needs to stop, but is it possible? It is can be done by not judging events/concerns at first glance, being wary of rumors, and asking about the concern.
First of all, we should not judge or base concerns on what we first hear or see. Judging first impressions is already a huge step in leading to an assumption. Based on experience, it is one of the causes of broken relationships. Many fights are fought over nothing but a false accusation. For example, in my group's documentary "Indolence: The Student Syndrome", the narrator wanted to focus on the laziness of students. Like the framing theory, this was the only thing emphasized (e.g. sleepiness, starving). In reality, the students were actually "lazy" because they overworked themselves. The narrator soon realized that her judgement was not at all true. We can prevent ourselves from doing this by being considerate. Everyone has their own problems to deal with; we can’t suspect that a person is bad just because of a label.
Second of all, we should not believe all the rumors or gossip we hear just because it’s well-known or trending. Even if it's human instinct to be social, agreeing with an assumption means we’d also believe that it's true. For example, some news companies only depict specific part of a trending topic. This can be done without an explanation as to why. Sadly, this is what the media does today. They would rather have commercialized reports for the sake of money. What we should do to avoid this is to ignore rumors. If there's still concern, look for the whole picture before deciding on an opinion. It’s better to understand the entire situation rather than to side with a popular opinion.
Lastly, communication is key. If we don’t communicate, we won’t be able to understand a certain concern. According to Moore (n.d.), lack of communication or an unresolved conflict can lead to misunderstandings, bad communication patterns or negative interactions, and deterioration or reduced relationship satisfaction. Going back to the documentary, the narrator presumed that the students were just slackers who would contribute nothing to society. In reality, they were dealing with their own problematic situations. If the narrator or the people in charge of that documentary did not confront them, they would continue to assume that students these days are just plain lazy. To be able to avoid having to burn bridges, all we have to do is to simply talk to each other whenever we have a concern. Bottling it up and complaining about the flaws of a certain person won't fix anything; it will instead make matters worse.
In conclusion, it is actually pretty simple to not assume things. All we have to do is to not judge things based on first impressions, to not believe in rumors, and to communicate with someone if there is a concern. It is pretty sad to know that people these days don’t really realize this. If people would stop assuming, the world would be a better place to live in.
Source:
Moore, A. (n.d.). The Effects of Lack of Communication in a Relationship. Retrieved from https://oureverydaylife.com/effects-lack-communication-relationship-25435.html


Quedex is your engineering consultancy
Our proven technology skills will help provide the infrastructure services and solutions for all your data, analytical and application needs.
Read MoreQuedex is your trusted advisor
Our in-depth business and technology engineering skills will help you to attain greater levels of operational efficiencies whilst delivering business-enabling solutions.
Read More


|
CoreSight Access Library
2.3
ARM CoreSight Access Library - on target CoreSight component control
|
Provides enable / disable, along with triggers and trace extraction for generic buffers. More...
Functions | |
| int | cs_sink_is_enabled (cs_device_t dev) |
| Check if sink is enabled. | |
| int | cs_sink_enable (cs_device_t dev) |
| Enable a trace sink. | |
| int | cs_sink_disable (cs_device_t dev) |
| Disable a trace sink to stop it generating back-pressure. | |
| int | cs_disable_tpiu (void) |
| Disable all TPIUs in the system. | |
| int | cs_get_buffer_size_bytes (cs_device_t dev) |
| Get buffer RAM size in bytes, for a trace buffer. | |
| int | cs_set_buffer_trigger_counter (cs_device_t dev, unsigned int bytes) |
| Set buffer trigger counter This stops the trace capture a defined time after the trigger event has been seen. More... | |
| int | cs_buffer_has_wrapped (cs_device_t dev) |
| Check whether the buffer has wrapped since being initialized. | |
| int | cs_get_buffer_unread_bytes (cs_device_t dev) |
| Get number of bytes that have not yet been destructively read from the buffer. | |
| int | cs_get_trace_data (cs_device_t dev, void *buf, unsigned int size) |
| Retrieve trace data from a buffer device, destructively. | |
| int | cs_empty_trace_buffer (cs_device_t dev) |
| Empty a trace buffer by resetting the write and read pointers. More... | |
| int | cs_clear_trace_buffer (cs_device_t dev, unsigned int data) |
| Clear the contents of a trace buffer device by overwriting it with a given data word. More... | |
| int | cs_insert_trace_data (cs_device_t dev, void const *buf, unsigned int size) |
| Insert trace data into a buffer device. More... | |
Provides enable / disable, along with triggers and trace extraction for generic buffers.
Supports standard ETB, TMC in ETB mode, TMC in ETF mode - programmed as Circular buffer.
| int cs_clear_trace_buffer | ( | cs_device_t | dev, |
| unsigned int | data | ||
| ) |
Clear the contents of a trace buffer device by overwriting it with a given data word.
Then set the trace buffer to empty as for cs_empty_trace_buffer().
| dev | The buffer device (e.g. ETB) |
| data | Data to write in - e.g. 0, 0xCDCDCDCD etc. |
| int cs_empty_trace_buffer | ( | cs_device_t | dev | ) |
Empty a trace buffer by resetting the write and read pointers.
After this call, cs_get_buffer_unread_bytes() will return zero and cs_buffer_has_wrapped() will return false. Emptying the buffer does not overwrite its contents, for that see cs_clear_trace_buffer().
| int cs_insert_trace_data | ( | cs_device_t | dev, |
| void const * | buf, | ||
| unsigned int | size | ||
| ) |
Insert trace data into a buffer device.
This is provided mainly for testing purposes. If the data being written is the size of the buffer, or greater, the buffer will be marked as having wrapped.
| dev | The buffer device |
| buf | Trace data to write into the buffer |
| size | Size of the data, in bytes |
| int cs_set_buffer_trigger_counter | ( | cs_device_t | dev, |
| unsigned int | bytes | ||
| ) |
Set buffer trigger counter This stops the trace capture a defined time after the trigger event has been seen.
| dev | Device descriptor |
| bytes | Number of bytes of trace to be written to the buffer following the trigger event. |
Set to a large value to capture trace after the event. Set to a small value to capture trace before the event. Set to half the size of the trace RAM to capture trace around the event.


Emma Worthington
Gerard McCarthy, Robert Marsh, Jenny Mecking, Sybren Drijfhout
Outline
(AMOC)
(from www.rapid.ac.uk)
Instruments on the moorings measure temperature, salinity, pressure and current velocity
Mid-ocean transport profile
RAPID AMOC timeseries
UMO = Upper Mid-Ocean transport, integrated down to deepest northward transport
Before 2004, measurements were taken by research ships crossing the Atlantic
RRS Discovery II leaving Woods Hole Oceanographic Institute in 1957
(Data from Bryden et al., (2005))
A simple linear regression
Atlantic Ocean potential temperature section at 24°N
World Ocean Circulation Experiment (1990 - 1997)
Simple linear regression
Longworth et al. (2011)
Data from 39 CTD casts taken between 1981 and 2005
$$ \Delta T_{upper} = A\dot{}temp_{400} + B $$
Regression explains 53% of variance
Simple linear regression using RAPID data
Thermocline (0 - 800m) transport predicted by western boundary temperature at 400 dbar
Only 9% of thermocline transport variance explained by regression
A slightly more complicated linear regression
Multiple linear regression
$$ \Delta T = A\dot{}temp_1 + B\dot{}sal_2 + C\dot{}temp_3 + D $$
Find the depth at which each variable gives the highest variance explained by the regression
Multiple linear regression using temperature and salinity anomalies
$$ \Delta T = A\dot{}temp_{780} + B\dot{}sal_{1020} + C\dot{}temp_{2840} + D $$
Now 39% of mid-ocean transport variance explained by regression
Multiple linear regression using density anomalies
$$ \Delta T = A\dot{}\rho_{740} + B\dot{}\rho_{940} + C\dot{}\rho_{2840} + D $$
67% of mid-ocean transport variance explained by regression
Summary
Thank you!
Any questions?
<EMAIL_ADDRESS>@E_L_Worthington
@emma_at_sea


{{ super() }}
{% endblock %}
{% block mid_grid_section %}
{% set static_link = 'projects_base.static' %}
{% set object_tag_link = 'projects.tag_search' %}
{% set search_description = 'This field can be used to search for projects
by using their associated tags' %}
{% include 'base/search_section.html' %}
{% include 'base/highlight_tags_section.html' %}
{% endblock %}
{% set object_show_link = 'projects.show' %}
{% set object_image_link = 'projects_base.img_render' %}


Our Initiatives
We at E-Cell, JSSATEN believe that entrepreneurship is the key to India’s development. To fulfill this vision, we have conceptualized & successfully implemented various initiatives to help students, young entrepreneurs & professionals in their entrepreneurial journey.
Financial Literacy Club
The club was founded in January 2021. to provide young adults with the necessary personal finance knowledge, to comprehend how business grows, and learn money investing skills in an interactive setting.
Women Empowerment Club
Ojaswini is the name we gave to the social drive launched by EDC that solely targets the local women doing small business on their own. The drive was brought to the mainstage with the help of "Women Entrepreneurship and Empowerment(WEE) Foundation".


GPDP
Google plus like dropdown selector.
- Pure JavaScript(none dependencies): Easy to be used in any project.
- Support complex value types: Object, Array, Number, Function, etc...
- Customized themes
Installation
Bower
bower install gpdp
Add the script and style files to your index.html
:
<link rel="stylesheet" href="bower_components/gpdp/dist/css/dp.min.css">
<script type="text/javascript" src="bower_components/gpdp/dist/dp.min.js">
</script>
NPM
npm install gpdp
Add the script and style files to your index.html
:
<link rel="stylesheet" href="node_modules/gpdp/dist/css/dp.min.css">
<script type="text/javascript" src="node_modules/gpdp/dist/dp.min.js">
</script>
RequireJS
Currently only the JavaScript file can be load asynchronously.
requirejs(['path/to/gpdp'], function (DP) {
// Use DP function here
});
Usage
// New DP
var newDP = new DP(containerElement, options);
/*
* If you want to use complex value,
* define an object of the options like in the example below.
*/
var options = {
name: 'Complex data',
data: [{
label: 'Object',
value: {
a: 1
}
}, {
label: 'Array',
value: [1, 2]
}, {
label: 'Function',
value: function () {
return 'value returned by function';
}
}, {
label: 'Null',
value: null
}]
}
/*
* Attach Event
* eventType: 'changeValue'
* callback: function (value) {} - callback function will have a paramter of the current value.
*/
newDP.listen(eventType, callback);
/*
* Detach Event
*/
newDP.unlisten(eventType, callback);
/*
* Get current value
*/
newDP.getValue();
TODO
- More features
- Full unit-testing
License
The MIT License (MIT)
Copyright (c) 2015 Cheng Gu
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


返回主页
ALIBABA GROUP HOLDING LIMITED CONSOLIDATED STATEMENTS OF CASH FLOWS
Supplemental disclosures of cash flow information:
Payment of income taxes
Enterprise income tax paid was RMB461 million, RMB1,469 million and RMB636 million (unaudited) for the years ended March 31, 2012 and 2013 and the nine months ended December 31, 2013, respectively.
Payment of interest
Interest paid was RMB16 million, RMB912 million and RMB807 million (unaudited) for the years ended March 31, 2012 and 2013 and the nine months ended December 31, 2013, respectively.
Major non-cash transactions:
During the year ended March 31, 2012, certain share options were exercised and certain restricted shares were subscribed where the related exercise price or the related subscription price was satisfied by full recourse loans provided by the Company. The amounts of such loans made during the year ended March 31, 2012 totaled RMB716 million. Further details of this non-cash transaction are disclosed in Note 13.
During the year ended March 31, 2013, the Company completed the Initial Repurchase for a total consideration of RMB44.9 billion (US$7.1 billion), of which RMB5.1 billion (US$800 million) was settled by the issuance of the Redeemable Preference Shares to Yahoo (Note 4(a)).
During the year ended March 31, 2013 and the nine months ended December 31, 2013, the Company entered into certain non-compete agreements with certain key individuals in exchange for 400,000 and 6,700,000 ordinary shares of the Company, respectively.
version:1.0<EMAIL_ADDRESS>© retter2012.com


Yeah, I believe that you’ve heard that - rumor, or at best unconfirmed news, has it that Justin Sun of Tron is going to buy Steemit, the company behind the biggest social media blockchain Steem.
It was all over the news, Chinese or English, yesterday and on Steemit of course.
But all the reporting comes from one single source - the famous Chinese crypto news channel, huoxing24.com (火星财经, meaning Mars Finance). It was founded in March 2018 and is invested by many famous global and Chinese venture capital funds. Binance is one of the investors.
You can still see many search results regarding this unconfirmed news if you google “火星财经 steemit”
All results are still there… except the first one - the original source.
If you click it, it will bring you to the news page: https://news.huoxing24.com/flash
The only starting sentences that we can see is “火星财经APP（微信：hxcj24h）一线报道，12月9日，据知情人士向火星财经透露，波场即将收购区块链项目Steemit。5天前，波场创始人孙宇晨曾在微博透露，近期又”
Which says “Huoxing APP (Wechat: hxcj24h) first hand reporting. On Dec. 9, according to an insider who told Huoxing Finance, Tron is going to acquire the blockchain project Steemit. Five days ago, founder of Tron, Justin Sun revealed on his weibo that recently …“
Google has snapshots. Let’s find out. The following is the text version.
The last one in the picture is the one. Here we can document the original link: https://news.huoxing24.com/flash/20191209235315636737.html and now it’s like this:
Yes, it is CENSORED. Ouch! A censorship upon a rumor about changing ownership of a blockchain company that gave birth to a censor-free blockchain. How ironic.
If you search ‘steemit’ on https://news.huoxing24.com, you do get some results but not that one. The latest news is on June, about Steem and Pivot…
The conclusion is simple: the very source of the rumor was removed for undisclosed reasons.
What does it mean?
Well, you can have your own answers. This is as far as my keyboard investigation can take you.
The following is just my reasoning for your reference amusement.
Possibility 1: Justin Sun forced, yes I believe he is influential enough to do so, Huoxing news to remove it because this is true, at least partly true or ongoing, but not ready to tell the world.
Possibility 2: Huoxing reporter made some mistake and reported it and now they withdraw it and pretend nothing happened.
Personally, I tend to think the first scenario is more likely. Partly due to other facts like: 1) Sun did not clarify this, 2) Steemit also did not say anything so far and 3) The Steem price is still up
Of course, there are other possibilities like some colluded price manipulation etc… I’ll leave that to your imagination. ^_^
What do you think!?
This page is synchronized from the post: ‘Is the Tron-acquiring-Steemit news fake? A followup keyboard investigation’


My Survey Results
Of My hero section!
26 emails
13 people
9 people
"the background"
"Good, calm background"
"nice full screen background image"
"Het is anders dan de andere sites die ik al zag. I like it!"
"the background"
"it seems the text is a little too small?"
"The text seems a bit lost in the huge image"
"the background image does not relate to the content so if you can't see the text you have no idea what it's supposed to be"
"Ik kan niet direct iets vinden "
"-"


현재 대략 1,000,000명의 자료가 들어있으며, USN은 1부터 1,000,000입니다. 편하게 테스트 하셔보시기 바랍니다.
Choose API
Get User Rank
Update Score
Delete User
Users around specific user
Rankers between rank {s} and rank {e}
# of Rankers between rank {s} and rank {e}
Rank of score {score}
Users below score {score}
GET /v1/user/{repo}/{usn}
USN
Execute
POST /v1/user/{repo}/{usn}?score=xxx
USN
SCORE
Execute
DELETE /v1/user/{repo}/{usn}
USN
Execute
GET /v1/around/{repo}/{usn}?prior=5&after=5
USN
PRIOR
AFTER
Execute
GET /v1/rankers/{repo}?s=5&e=15
s
e
Execute
GET /v1/nrankers/{repo}?s=5&e=15
s
e
Execute
GET /v1/rank_of/{repo}/{score}
SCORE
Execute
GET /v1/usersFrom/{repo}/{score}?limit=xxx
SCORE
LIMIT
Execute


In the next example we will learn how to alter the contents of such pages on-the-fly and how to generate such pages on demand.
And here is another page on this server.


Basic mtz-wizard demo
Toggle Active
Toggle Step
step with no form
Optional step with a form
Age:
Required step with a form
First Name*:
Last Name:
Conditional Div treated as a step
should never be visible
Previous Step
Next Step
Validate Steps


{{ sample }} sample
This sample shows how to authenticate for Microsoft Graph with the {{ sample }} library
Connect


YOUR BMI AND HEALTHY WEIGHT RANGE
There's no "perfect weight" that fits everyone. BMI, or body mass index, measures how healthy your weight is based on how tall you are. It gives you a clue to your risk for weight-related health problems. If you're over 20 and not pregnant, find out what your number is and what it means.
RESULT
Your BMI is :
38.5
ANALYSIS
Since your weight puts you in the obese range, you're much more likely to have serious health problems. The healthy range for BMI is between 18.5 and 24.9. A healthy weight for someone your height would be
You
OBESE
30 and above
OVERWEIGHT
25.0 - 29.9
HEALTHY
18.5 - 24.9
UNDERWEIGHT
below 18.5
YOUR FOOD AND EXERCISE TIPS
Find out how many calories your body is using each day and what you can do to get your weight where you want it to be.
RESULT
Current Daily Calories Needed :
3343
NOTE
This is about how many calories your body uses to do all the things you need it to in a day: breathing, blinking, chewing, reaching, talking, walking, and more. It's the number you should start with as you decide how to reach your weight goal.
TARGET HEART RATES →
←
BACK TO RESULT
TARGET HEART RATES
GENERAL FITNESS RATES →
MODERATE INTENSITY
100 - 130 BPM
INTERVAL HEART RATE →
RECOVERY
100 - 130 BPM
HIGH INTENSITY
160 - 170 BPM
←
BACK TO PREVIOUS
GENERAL FITNESS RATES
For a healthy workout, get your heart rate up into this target zone for at least 10 minutes at a time. You should be able to talk but not sing, and you should break a sweat. Try:
Walking as fast as you can
Riding your bike
Playing doubles tennis
Cutting the lawn with a push mower
Aim for a total of at least 150 minutes every week.
Pressed for time? You can get the same health gains in 75 minutes a week by bumping your heart rate into the upper end of your general fitness zone. Try:
Jogging
Aerobics or cycling class
Playing singles tennis
Heavy yard work, like shoveling
←
BACK TO PREVIOUS
INTERVAL HEART RATES
Boost your exercise benefits with interval training.
High-intensity interval training, or HIIT, will help you burn calories and fat as well as build endurance and slow the aging process.
After you warm up for 5-10 minutes, alternate bursts of exercise in your high-intensity target zone with short recovery periods at around half of your maximum heart rate.
For example, run as fast as you can for 1 minute, then walk for 2 minutes. Do that five times for a great workout in only 15 minutes.
Mix up your workouts during the week.
High-intensity intervals: 2-3 times
General fitness: 3 times
If you have a medical condition, check with your doctor before you try pushing yourself hard.


Dallas Buyers Club
Shop huge inventory of Disney Bear Pink, My First Disney Bear, Disney Country Bears Disney Vinylmation Celebrations IT'S A BABY GIRL PINK BEAR 3. Disney Duffy The Disney Bear Plush Stuffed Animal 12" My First Duffy Bear NWT
Shop huge inventory of Disney Bear Pink, My First Disney Bear, Disney Country Bears Disney Vinylmation Celebrations IT'S A BABY GIRL PINK BEAR 3. Disney Duffy The Disney Bear Plush Stuffed Animal 12" My First Duffy Bear NWT
Many people want to know how to be sure their Duffy or Disney Bear is genuine Several people are selling bears right. now that are not Disney Authentic
Find and follow posts tagged duffy bear on Tumblr. Aug 30, 2011 However, Disney Bear was not popular and was discontinued Especially many girls collect some Duffy and as you can see in the pictures,
May 4, 2012 Due to the Disney bear's soaring popularity, as of May 6, 2012 all Duffy products will have a purchase limit. Welcome to the Duffy The Disney Bear FAQ If you are. new to the.
Duffy the Disney Bear 89469 likes · 2524. talking about this. The Story of Duffy The Disney Bear: One day, Mickey. Mouse was getting ready to set sail on a long
A documentary about wounded veterans that Roger championed gets a screening at the Rehabilitation Institute of Chicago and screenings in New York and Los Angeles…
Begin your adventure with Mickey's bear-y best pal. Duffy the Disney Bear by browsing DisneyStore com for Duffy plush, accompanying outfits, and Duffy
Duffy the Disney Bear is a Disney character that can be found at Tokyo Disney Resort, Disneyland and Disney California Adventure Park in California, Walt
Because there in front of him. was a sweet, little girl. Official webisite for Duffy the Disney Bear and ShellieMay the Disney Bear (Japanese ??); A website
Jul 17, 2013 On the way we saw Duffy the Disney Bear! The line was. With three girls (four including the wife). I have focused more on the Magic Kingdom Each girl receives an 18-inch doll and each boy. a Duffy the Disney Bear, among other gifts Purchase birthday ear hats at The Chapeau in Magic Kingdom or
Aug 8, 2012 Posted by Erin De Santiago in Disney. News, Duffy the Disney Bear, you get a quick glimpse of Duffy as he's ripped from the girl's arm by her
An open letter from Woody Allen; an Edna Krabappel tribute; the possibility of a "Prometheus 2"; why film festivals reject good films; the return of…
Young princes receive a pin, a plush Duffy. the Disney Bear and a Pirate Mickey cap. Reservations My Disney Girl's Perfectly Princess Tea Party starts at 10:30 Aug 28, 2013 Meeting Pinocchio at. DisneySea, Tokyo. Girls dressed as Minnie Mouse hurry over to meet Pinocchio Girls with Duffy Bears at DisneySea,
Balder and Dash
Duffy The Disney Bear LIKES: 1 COMMENTS: 0 ? @daniella_swanson, rachelrampat There's a Japanese camera crew in front of me at Epcot, Disney
MZS
Girls. Rapunzel; Minnie Mouse; Sofia the First; Violetta; Disney Fairies · Characters Duffy Buzz Lightyear Costume For Duffy Bear 43cm Soft Toy Quick Look
Interviews
Nov 12, 2010 Us girls taking the familiar walk down to Harajuku station Shellie May is Duffy's (the Disney Bear) girlfriend and the story goes that Mickey Displaying: 1 - 36 of 76 duffy the disney. bear greeting cards for sale (0 099 s). Duffy The Disney Bear Greeting Cards - Bear and His Girl Greeting Card by
Thumbnails
Sep 20, 2010 Duffy the Disney Bear passholder presentation. Call me a sentimental girl, but I for one am excited. for Duffy's arrival and supportive of the Mar 20, 2012 If you've been to any Disney theme park, then you might have seen Duffy the Disney Bear I know that the American Pavilion. in EPCOT is
Chaz's Blog
Oct 15, 2013 October 15, 2013 | More than 23000 Disney fans from all across Japan Suzuki, and Girl Next Door giving their own takes on popular Disney songs Plus, there was a room dedicated to Duffy the Disney Bear, who is also
Thumbnails
Jul 16, 2012. Some favorite fictional bears have had surprisingly human names, from Mabel to Duffy Duffy the Disney Bear is Mickey Mouse's own teddy (there's actually quite a family resemblance), supposedly. I love Winnie for girls!
Interviews
Anyone know the name of the pink Duffy? Does she exist That is NOT a girl Duffy She is.  Duffy the Disney Bear - Mickey's New Friend clip on channel WHAT from TIMES. Beauty and the Beast Book - With a hairy beast, an adventurous girl, talking
Thumbnails
Feb 2, 2012 Be My Valentine Duffy the Disney Bear Plush Toy 12 H ? So cute! Gifts for Hobbies Find a gift for your tween girl's hobby, especially if it's
Thumbnails
Nov 6, 2010 Three weeks ago, Disney introduced a new costumed character into company theme parks in Orlando and California. He did not arrive alone. Our favorite pal Duffy is getting some new, stylish attire this summer! Take a look at this post on the Park's Blog by author Steven Miller!
Thumbnails
This Happy Birthday goes out. to our special friend DUFFY! What do you mean which Duffy? Well a very. special Duffy the Disney Bear that was adopted on Many people want to know how to be sure. their Duffy or Disney Bear is genuine Several people are selling bears right now that are not Disney Authentic.
Balder and Dash
Find and follow posts tagged duffy the disney bear on Tumblr. Duffy / The Disney Bear - Duffy the Disney Bear discussion and information Duffy the Disney Bear (?????) is a Disney Character. that can be found at Tokyo DisneySea
Balder and Dash
Mar 22, 2012 Duffy the Disney Bear loves. to go shopping at Walmart Nov 3, 2011 Disney Resorts in-room televisions are now running a read-along Duffy the. Disney Bear: Mickey's New Friend clip on channel WHAT from
Thumbnails
Duffy the Disney Bear. 87915 likes · 4803. talking about this The Story of Duffy The Disney Bear: One day, Mickey Mouse was getting ready to set sail on a long Duffy the Disney Bear. 89003 likes · 2524. talking about this The Story of Duffy The Disney Bear: One day, Mickey Mouse was getting ready to set sail on a long
Interviews
Mickey's teddy bear has arrived in World Showcase Plaza to see you off. on your own international journey in Epcot at Walt Disney World Resort
MZS
Duffy The Disney Bear One day Mickey was preparing to set sail for a long voyage around the world Minnie thought he should have something special to Jan 22, 2013 It's cold in Illinois today. It was colder yesterday So, I want to tell you a heart- warming story It's about a little. bear named Duffy 2 years ago, I


Northern Irish man arrested by UK police in connection with 39 Essex lorry deaths
The man was arrested on the M40 motorway in Buckinghamshire.
by Rónán DuffyA MAN FROM Northern Ireland has been arrested by UK police as part of investigations into the deaths of 39 people found dead in a trailer in Essex last month.
The 23-year-old was arrested in the early hours of this morning in Beaconsfield, Buckinghamshire on suspicion of conspiracy to traffic people and conspiracy to assist unlawful immigration.
The man was arrested by officers from Thames Valley Police on the M40 motorway between London and Oxford on behalf of Essex Police and he remains in custody.
All 39 people found dead in the back of the lorry last month have now been identified and are Vietnamese nationals.
The victims included 30 men, seven women and two boys aged 15 and 17.
The trailer had arrived into the UK via a ferry from Zeebrugge, Belgium.
The driver of the lorry, Maurice Robinson (25), from Craigavon, Co Armagh, was arrested by Essex police at the scene and was subsequently charged with 39 counts of manslaughter.
Other arrests have been made by gardaí as well as British and Vietnamese police.


--- layout: default ---
.js
files.<script src="filename.js"></script>
tags should be placed as late in the body as possible. This reduces the effects of delays imposed by script loading on other page components. There is no need to use the language or type attributes. It is the server, not the script tag, that determines the MIME type.UpperCamelCase
.lowerCamelCase
.Blank lines improve readability by setting off sections of code that are logically related.
Blank spaces should be used in the following circumstances:
(
(left parenthesis) should be separated by a space.(
(left parenthesis). This helps to distinguish between keywords and function invocations..
(period) and (
(left parenthesis) and [
(left bracket) should be separated from their operands by a space.typeof
.;
(semicolon) in the control part of a for statement should be followed with a space.,
(comma).:
(colon) in an object declaration.{}
(curly braces), but not inside ()
(parentheses) or []
(square brackets).Be generous with comments. It is useful to leave information that will be read at a later time by people (possibly yourself) who will need to understand what you have done. The comments should be well-written and clear, just like the code they are annotating. An occasional nugget of humor might be appreciated. Frustrations and resentments will not.
It is important that comments be kept up-to-date. Erroneous comments can make programs even harder to read and understand.
Make comments meaningful. Focus on what is not immediately visible.
Generally use line comments. Save block comments for formal documentation.
All variables should be declared before used. JavaScript does not require this, but doing so makes the program easier to read and makes it easier to detect undeclared variables that may become implied globals. Implied global variables should never be used. Use of global variables should be minimized.
The var
statement should be the first statement in the function body.
It is preferred that each variable be given its own line, and comment if necessary—though there is no substitute for using a meaningful name. Value clarity over brevity in variable names. They should be listed in alphabetical order if possible.
JavaScript does not have block scope, so defining variables in blocks can confuse programmers who are experienced with other C family languages. Define all variables at the top of the function.
All functions should be declared before they are used. Inner functions should follow the var
statement. This helps make it clear what variables are included in its scope.
There should be no space between the name of a function and the (
(left parenthesis) of its parameter list. There should be one space between the )
(right parenthesis) and the {
(left curly brace) that begins the statement body. The body itself is indented four spaces. The }
(right curly brace) is aligned with the line containing the beginning of the declaration of the function.
This convention works well with JavaScript because in JavaScript, functions and object literals can be placed anywhere that an expression is allowed. It provides the best readability with inline functions and complex structures.
If a function literal is anonymous, there should be one space between the word function and the (
(left parenthesis). If the space is omitted, then it can appear that the function's name is function
, which is an incorrect reading.
Use of global functions should be minimized.
When a function is to be invoked immediately, the entire invocation expression should be wrapped in parens so that it is clear that the value being produced is the result of the function and not the function itself.
Names should be formed from the 26 upper and lower case letters (A .. Z
, a .. z
), and the 10 digits (0 .. 9
). Avoid use of international characters because they may not read well or be understood everywhere. Though it is legal syntax, do not use _
(underbar) in names, instead preferring to put function and variable names in lowerCamelCase
. Do not use \
(backslash) in names. Only use $
(dollar sign) in variable names if you are denoting that the variable contains a jQuery object.
Do not use _
(underbar) as the first or last character of a name. It is sometimes intended to indicate privacy, but it does not actually provide privacy. If privacy is important, use the forms that provide private members. Avoid conventions that demonstrate a lack of competence.
Most variables and functions should start with a lower case letter.
Constructor functions that must be used with the new
prefix should start with a capital letter. JavaScript issues neither a compile-time warning nor a run-time warning if a required new
is omitted. Bad things can happen if new
is not used, so the capitalization convention is the only defense we have.
Global variables should be in all caps. JavaScript does not have macros or constants†, but also use all caps for variables you'd make constant if you could.
† ECMAScript 6 (ES6/ES2015) introduces the const
keyword, which gets close to the desired behavior of disallowing reassignment or redeclaration, but doesn't cause compile-time errors on reassignment and isn't yet supported across modern browsers.
Each line should contain at most one statement. Put a ;
(semicolon) at the end of every simple statement. Note that an assignment statement that is assigning a function literal or object literal is still an assignment statement and must end with a semicolon.
JavaScript allows any expression to be used as a statement. This can mask some errors, particularly in the presence of semicolon insertion. The only expressions that should be used as statements are assignments and invocations.
Compound statements are statements that contain lists of statements enclosed in { }
(curly braces).
{
(left curly brace) should be at the end of the line that begins the compound statement. Exception: if the compound statement belongs to an if
statement that spans multiple lines, it is acceptable to move the left curly brace to a new line (see example).}
(right curly brace) should begin a line and be indented to align with the beginning of the line containing the matching {
(left curly brace).if
or for
statement. This makes it easier to add statements without accidentally introducing bugs.Statement labels are optional. Only these statements should be labeled: while
, do
, for
, switch
.
return
statementA return statement with a value should not use ( )
(parentheses) around the value. The return value expression must start on the same line as the return keyword in order to avoid semicolon insertion.
if
statementThe if
class of statements should have the form shown to the right.
?
Ternary operators are fine to use as long as what's happening in the code is clear. Keep the statement simple and never nest them. A rule of thumb here is that if your ternary statement is long enough to wrap on to multiple lines, it’s too long. In that case, simply using if
is easier to read and understand.
for
statementThe for
class of statements should have the forms shown to the right.
The first form should be used with arrays and with loops of a predeterminable number of iterations.
The second form should be used with objects. Be aware that members that are added to the prototype of the object will be included in the enumeration. It is wise to program defensively by using the hasOwnProperty
method to distinguish the true members of the object.
while
statementA while
statement should have the form shown to the right.
do
statementA do
statement should have the form shown to the right.
Unlike the other compound statements, the do
statement always ends with a ;
(semicolon).
switch
statementA switch
statement should have the form shown to the right.
Each case
is aligned with the switch
. This avoids over-indentation. A case
label is not a statement, and should not be indented like one.
Each group of statements (except the default) should end with break
, return
, or throw
. Do not fall through.
try
statementA try
statement should have the form shown to the right.
continue
statementAvoid use of the continue
statement. It tends to obscure the control flow of the function.
with
statementThe with
statement should not be used:
Always use strict mode. It disables such undesirable features as implicit global variable declaration and in general makes your code behave more predictably.
Always use named function expressions:
{}
and []
Use {}
instead of new Object()
. Use []
instead of new Array()
.
Use arrays when the member names would be sequential integers. Use objects when the member names are arbitrary strings or names.
,
(comma) OperatorAvoid the use of the comma operator. (This does not apply to the comma separator, which is used in object literals, array literals, var
statements, and parameter lists.)
In JavaScript blocks do not have scope†. Only functions have scope. Do not use blocks except as required by the compound statements.
† ES2015 introduces the let
keyword, which along with const
is block scoped. Even so, as stated above, avoid creating blocks around let
, and only use blocks as required by compound statements.
Avoid doing assignments in the condition part of if
and while
statements.
Is assignment or comparison intended? Avoid constructs that cannot easily be determined to be correct.
===
and !==
operatorsUse the ===
and !==
operators. The ==
and !=
operators do type coercion and should not be used.
Be careful to not follow a +
with +
or ++
. This pattern can be confusing. Insert parens between them to make your intention clear.
eval
is evilThe eval
function is the most misused feature of JavaScript. Avoid it. Similar to the with
statement:
eval
from modifying lexical scope.eval
has aliases. Do not use the Function
constructor. Do not pass strings to setTimeout
or setInterval
.
When writing Node.js code, take care to define your callbacks in the idiomatic error-first style:
err
argument.err
will be set to null and any successful data will be returned in the second argument.Learn more about error-first callbacks in Node.js.
When orchestrating several asynchronous operations, consider using a promises library like Q or abstraction library like async instead of nesting callbacks inside callbacks inside callbacks etc. They'll make complex asynchronous code easier to read and untangle.


This is very cool, thank you. And also, nice last name, Other Mr. Crowley.
However, I found one problem: when I installed the plugin and began using it, Ruby complained that I was calling gsub() on a Hash. Tracing back, I found that commenting the line
in headliner.rb fixed the problem, but I'm confused as to why this was there anyway. Shouldn't that line be in the section that runs if options.is_a? String?
That's probably beyond the scope of Headliner, Jamie.
Keywords aren't useful these days because of abuse by SEO folk, but description is still pretty useful, of course. However, many applications don't have useful descriptions for each page.
I'll consider doing a plugin in the future (if I find myself needing to add descriptions)... but I'm sure you can whip up a simple helper if you need this now.
Hey buddy. I remembered when we talked about this plugin at Korova back in the day and I didn't have an example of my usual approach to titles. The one I was experimenting with back then was overcomplex anyway. Anyway I finally got around to typing up my current technique at http://nick.zadrozny.com/post/9840594
So the downside to my approach is memorization and rote addition to every new project—which is more than enough to justify headliner, IMO. But since I've already paid that price the upside is it's very simple, trivial to customize and extend, non-magical, just as flexible, and potentially even more dry for multiple layout files. But to each his own.
You might like that textilize_without_paragraph bit in #t(). Makes for nice quote marks and apostrophes.
(Oh, by the way, I'm going to try to post the occasional Rails snippet at my tumblelog there but may end up creating a separate blog entirely for that stuff. Some Day™)
Yeah, I like your use of textilize_without_paragraph. Maybe I can roll that into Headliner down the road. Web typography can be tricky, though... people tend to have their own way of dealing with such things.
(Errr... you can do some HTML in comments, I believe.)
I've added a description and keywords methods to headliner, so you can add both/either description or keywords meta tags in the same way.. I know they're not really used that much, but some clients are still demanding them.... Where should I send the source to?
Do you have plans to put your plugin on Github? We are using submodules in our applications to manage plugins, and it would be pretty cool to have your plugin submoduled too.
Works perfectly, just what I needed, thanks!
This is very cool, thank you. And also, nice last name, Other Mr. Crowley.
However, I found one problem: when I installed the plugin and began using it, Ruby complained that I was calling gsub() on a Hash. Tracing back, I found that commenting the line
{% highlight ruby %} @title = options.gsub(/<\/?[^>]*>/, "") {% endhighlight %}in headliner.rb fixed the problem, but I'm confused as to why this was there anyway. Shouldn't that line be in the section that runs if options.is_a? String?
Yes, that last commit just totally borked our application. Something like this might be more appropriate:
{% highlight ruby %} def title(options, headline='') - # Remove markup from title - @title = options.gsub(/<\/?[^>]*>/, "") - # Save title if options.is_a? String - @title = options + @title = options.gsub(/<\/?[^>]*>/, "") {% endhighlight %}Sorry, here: http://pastie.caboo.se/77309
My bad, guys. Should be fixed now.
Hectic! I love the simplicity!
Thanks for introducing this at the Sydney Rails Group Patrick, works very nicely.
I like this a lot. How about a variation for meta descriptions, keywords etc.?
That's probably beyond the scope of Headliner, Jamie.
Keywords aren't useful these days because of abuse by SEO folk, but description is still pretty useful, of course. However, many applications don't have useful descriptions for each page.
I'll consider doing a plugin in the future (if I find myself needing to add descriptions)... but I'm sure you can whip up a simple helper if you need this now.
Hey buddy. I remembered when we talked about this plugin at Korova back in the day and I didn't have an example of my usual approach to titles. The one I was experimenting with back then was overcomplex anyway. Anyway I finally got around to typing up my current technique at http://nick.zadrozny.com/post/9840594
So the downside to my approach is memorization and rote addition to every new project—which is more than enough to justify headliner, IMO. But since I've already paid that price the upside is it's very simple, trivial to customize and extend, non-magical, just as flexible, and potentially even more dry for multiple layout files. But to each his own.
You might like that textilize_without_paragraph bit in #t(). Makes for nice quote marks and apostrophes.
(Oh, by the way, I'm going to try to post the occasional Rails snippet at my tumblelog there but may end up creating a separate blog entirely for that stuff. Some Day™)
Oops. No comment formatting? :\
Yeah, I like your use of textilize_without_paragraph. Maybe I can roll that into Headliner down the road. Web typography can be tricky, though... people tend to have their own way of dealing with such things.
(Errr... you can do some HTML in comments, I believe.)
Great plugin! I have been looking for something like this for a while. Have been adding it to many of my sites. Nice job.
I just stumbled across this and it solves my page title problems perfectly. Thanks for the great plugin Patrick :)
I've added a description and keywords methods to headliner, so you can add both/either description or keywords meta tags in the same way.. I know they're not really used that much, but some clients are still demanding them.... Where should I send the source to?
Nice little plugin! Thanks for your work!
Do you have plans to put your plugin on Github? We are using submodules in our applications to manage plugins, and it would be pretty cool to have your plugin submoduled too.
Thanks, it's really useful
Perfect, exactly what I was looking for.


Urban Carbon Sinks
In every city around the world, processes are underway to remove carbon from the atmosphere. While some people may imagine industrial carbon capture and sequestration projects like the Boundary Dam project in Saskatchewan, there are a number of other ways that we can remove carbon from the atmosphere (you can probably some of these at this very moment...). In this research, my doctoral advisor Chris Kennedy and I wanted to quantify these carbon sinks, and determine if they make a substantial impact in "offsetting" the emissions from cities. We used the case study of the Greater Toronto Area (GTA) as it's a large area (~7,100 square kilometres), with lots of green areas and farmland; if anyplace is able to store a substantial quantity of carbon annually, the GTA seemed to be a likely candidate.
Direct Carbon Sinks
We differentiated sinks into two types. The first of these is "Direct Sinks", so named because the sequestration of carbon occurs directly within the politcal boundary of the GTA. These include carbon sinks such as forests and soils. Of course there is some overlap there, as forest soils also sequester carbon, but estimates weren't available as to how much soil might be sequestered (we used IPCC 2006 inventory guidelines). We looked at the the carbon stored in:
- Urban forests (trees within the built-up areas));
- Regional forests (large stands of trees outside these developed areas);
- Perrenial crops (trees grown on Christmas tree plantations, fruit tree farms, and nursuries), and;
- Agricultural soils (soils on farmland transferred from crops)
we get a figure of 317 kilotons of carbon being stored in the GTA in 2005! If the land uses that host these sinks aren't changed to a great degree, we can expect roughly this amount of carbon to be stored every year.
Embodied Carbon Sinks
The second category of carbon sink that we used is less intuitive than the first. As it happens, carbon sinks that have the potential to store substantial amounts of carbon enters the GTA's boundaries each year. We identified three that we thought would be pretty large:
- Concrete (stores carbon as the calcium hydroxide in the cement reacts with CO2 in the air);
- Landfills (store carbon though the biogenic materials that are stored within them - food scraps, lumber, and paper), and;
- Harvested Wood Products (store carbon that is imported in lumber, furniture, etc).
From these 3 types of carbon sinks, we calculated that roughly 234 kilotons of carbon are stored annually. You might be wondering "Isn't more carbon released in the manufacture of these materials/goods than would be stored in cities?" Well, you're certainly right with the case of concrete and you're probably right in the latter two cases. As well, landfills emit a potent greenhouse gas in the process of storing these biogenic materials. So it's important to note at this point that we've quantified "gross" carbon sinks - we didn't include emissions associated with the production either direct or indirect sinks. As well, there's some uncertainty in the calculations made about the quantities that are stored.
Okay, let us assume that there is some degree of certainty in the figures we've calculated for direct sinks (the carbon stored that is a little less dubious). How does that compare to the carbon emitted from the GTA in 2005 (just considering emissions from natural gas, diesel, gasoline, and electricity generation). Well, judging from the figure below, it's not very promsing. Taking a daily average of 2005's emissions, the carbon stored in these direct sinks all year long amounts to the carbon emitted by about January 7th. In short, it'll take a long, long time before the GTA can claim to be carbon neutral within its own boundaries.
Certain carbon sinks have value outside of the direct sequestration of carbon, which should highlighted in light of our carbon calculations. For example, regional forests provide nearby recreational opportunities, improve watershed quality, reduce flood risks, and provide habitat for wildlife. Urban forests can do the same, with the additional benefit of reducing local air pollution and lowering energy bills by blocking the sun/wind, as well as evaporative cooling. Conversely, urban forests can also increase GHG emissions through their maintenance and the maintenance of infrastructure that they can damange when not planted carefully. Pursuing carbon sinks requires a very careful calculation of net benefits, so that there is a clear understanding of what benefits will be achieved.
The Danger of Double Counting
When publishing this article, it occurred to us that a danger existed in quantifying embodied carbon sinks; for example, what if you grow trees that are used in harvested wood products consumed in the urban boundary? Wouldn't those get counted as sinks twice? It is a concern, especially in cities that produce such resources within their borders. As a result, if one were to use our approach, they would have to also provide an estimate of the quantity of the HWP consumption that is locally sourced and subtract this figure.
In the review of our paper, one reviewer came up with an alternative approach to accounting that can reduce the error from these boundary concerns (Wiedmann, 2012). He proposed a system that is similar to what is done with carbon emissions footprint - you quantify the sinks that occur directly in your boundary (no matter the type), as well as those which exist through your consumption. While this is certainly a more precise approach from an accounting perspective, we found that the data necessary to begin to quantify these wasn't available at the urban scale. This was ultimately why we chose the direct vs embodied approach. Hopefully as data becomes available at a finer scale, the approach suggested by Wiedmann will become possible for all cities.
You can download the preprint version of the paper here or if you have a subscription to the Journal of Industrial Ecology, you can download the published version here.


Author:{{myquotes.author}}
{{ votequote }}
{{ downloadquote }}
This quote is posted in {{myquotes.completeDate|dateCounter}} days ago


A test could produce some test output that could, for example, be a html file, a markdown file or just a textual log file.