{% extends 'basics/base.html' %} {% block content %}
{% load staticfiles %}Act of Goods is a platform that helps people in emergencies or natural disasters. Give away the items you no longer need and trade with others in your area for items that you do! It's simple: just sign up with your email address and location, so that we know where you can help others, as well as where you would be able to pick up items that you need. Everytime you add a new need, you can change your need location as well as profile location. Act of Goods takes confidentiality very seriously and all of your information will be anonymous. In order to make a trade with another user, simply send them a message using our chat system.
The immediate aid button allows you to start helping others immediately without signing up first!
2 people currently have needs! Sign up to provide them with the item they are looking for.
We want to help others in times of need, and we know many people feel the same way. Therefore, we have developed this platform to enable everyday citizens to make a real difference. There are already many NGO's working tirelessly to help people around the world. If you or your organization are interested in working with us, we are always looking to continually develop partnerships with other organizations.
We want to help others in times of need, and we know many people feel the same way. Therefore, we have developed this platform to enable everyday citizens to make a real difference. There are already many NGO's working tirelessly to help people around the world. If you or your organization are interested in working with us, we are always looking to continually develop partnerships with other organizations.
Providing us with the location enables us to figure out where you can best meet the needs of others, and where others could meet your needs. You are always anonymous, and if you move or have items available in a different location, you can change the location for that specific item, as well as the location on your profile. It is possible to have a different location of an item, than stated on your profile.
Please provide us with your exact location by filling in the form.
Allow Google to track your location by clicking "Get Location"
The Immediate Aid button enables you to start helping others immediately. In the category button you can find the current needs that people have. The provide us with your location, and a short yet clear headline of your item. Finally, please provide us with a description of the item and click submit.
on the hompage users can see a newsfeed of all the most relevant needs, your own needs and important information. Users can filter the newsfeed based on item categories that are currently in demand and with one click a user can start chatting.
Here you can either create or delete a profile Please note that when you delete your profile, all data will be permanently deleted.
As a user you can create a profile. You can also indicate your location radius of where you can provide help. By implementing your telephone number, you can automatically send your phone number to the people that you chat with simply by clicking on a button. If you want to get emails notifying you of different needs in your area, check on 'inform me via email'.
Submit a new need first by naming the category of your need. The provide a short yet clear headline so that other users know what you are looking for, along with your location so that we can match who can meet your need. Finally, provide a description of your need.
If you are a member of a organization and when you create a new need, you can select if this need is for you or if it is for an organization that you represent.
Make a difference by providing items for the newest needs! The help button allows users to start privately chatting with the person in need directly and annonymously. Finally, if you feel that this post is suspiscous or inappropriate you can notifty us simply by clicking on the report button. The Act of Goods team will then look into it.
You can chat with people that want to meet a need, and if you feel that this person is the correct contact for you, decide on a meeting point or exchange telephone numbers.
On the top left corner you can see the need that this person can meet. If you leave a chat, it will automatically be deleted and you can no longer look at it.
Information templates enable users to provide important information and create updates to share with users. Simply follow the template below, and the information newsfeed with be updated with your new information.
A organization is supposed to represent an actual organization such as NATO or Greenpeace. This platform can help many organisations further their initiatives and make a meaningful impact on the lives of others.
{%else%}Organization's enable NGO's to stay connected on the Act of Goods website.
Your Organization's Profile
You can edit your profile at anytime, ensuring that all of your information is up-to-date. This will allow people to connect through act of goods.
Your Organization's Profile
You can edit your profile at anytime, ensuring that all of your information is up-to-date. This will allow people to connect through act of goods.
As a member of an organization you can search for more members of your organization on acts of goods and connect with them and add them to the organization's act of goods group.
If someone leaves a group, they are unable to automatically join again. Someone must send them an invitation again.
Edit Your Organization's Profile
You can edit your profile at anytime, ensuring that all of your information is up-to-date. This will allow people to connect through act of goods.
Areas claimed:
Organizations can claim areas of land where help is needed. In order to make a new claim, simply click on the 'new claim' button located in the top left corner and click on the area of land that needs help. As the person who claims this need, you are responsible for ensuring that enough help is provided. The colours indicate the various organizations that claimed land. The various organizations providing help can also be seen in the list below.
When you click on the organization, you can also see what other organizations have requested in other areas.
With the filter button, you can filter needs and areas where claims have been made.


Fight of the Day: Marcelo Garcia vs. Marcos Avellan
by Luke Irwin
Date: October 28, 2007
Card: Grappler’s Quest
Championship(s):
Venue:
Location: Asbury Park, New Jersey
Date: October 28, 2007
Card: Grappler’s Quest
Championship(s):
Venue:
Location: Asbury Park, New Jersey


{% extends "events/events.html" %} {% load static %} {% block description %} Past Events Gallery | SWE - University of Louisiana at Lafayette {% endblock %} {% block title %} Past Events Gallery | SWE - University of Louisiana at Lafayette {% endblock %} {% block headerHeading %} Past Events Gallery {% endblock %} {% block firstBlockText %} Thank you to all our amazing volunteers! {% endblock %} {% block secondBlock %} {% for event, data in event_data.items %}


Home
My Universe
About
Contact
Hey My Name Is
Kunbee
And Welcome to my Universe
Lorem ipsum dolor sit amet,.
one
one
one
one
one


Toggle navigation
home
personal trainers
classes
join us
photo gallery
contact
Weight Machines
Treadmills
Treadmills and Weight Machines
Stationary Bikes
Aerobics Room
Previous
Next


Preface - This is the English version of Hum - Hum EnglishThe notations shown here are for the English-language version of Hum which we refer to as "Hum English". The concepts of Hum are the same from language to language. But the notation may vary to accommodate the conventions and keyboards associated with different languages. |
Hum applications are composed from short vignettes called frames. There are several types of frames which serve different purposes. Each type of frame uses a slightly different notation.
While one goal of Hum is to be as natural as possible, one must recognize that written English is not as "natural" as verbal English. Various notations and conventions are used in written English for various contexts and purposes. For example, technical documents often contain specific notations that have their own peculiar semantics and, if read aloud, would be unusable as verbal English. (For example: Consider a train schedule.) And thus, even written English contains many examples of synthetic language.
Hum has notations that are intended to be easy to learn and highly readable. The notations are designed around the concepts that they are intended to record and convey. Computer languages such as FORTRAN, Basic, C, and Java are designed as much for the computer's convenience as for human convenience. Hum is designed for human convenience.
|
There are several types of frames
- each with a different purpose and a different notation.
.
|
The purpose of a Goal Frame is to describe part of a process. A component of the system called the Planner creates programs, called plan trees, by assembling related Goal Frames. The Planner assembles task frames to form a plan. It does that by working backwards from a goal. The goal matches a post-condition in one of the task frames.
The notation of the task frame is designed to concisely describe an individual task. It also facilitates starting with an end-goal and then letting the system identify what process knowledge remains to be described.
--- Goal: (declarative sentence) Preconditions: . (pre-condition - matches some other task's post-condition) . (pre-condition) . (...) . (Some tasks have no pre-conditions. They are ready to run.) Actions: . (role) : (action - understood by an actor assigned the role) . (role) : (action) . (...) . (Some tasks will have no actions. They simply define a named-state.) ---
Goal: Order delivered to customer. Preconditions: . Customer has paid for order. . Order is ready for delivery. Actions: . Counter: Give order package to customer. . Bookkeeper: Account for order revenue and taxes.
Action Frames provide the instructions required to perform a action. At run-time, these instructions will be executed by an actor assigned the role named in the frame header.
Since the instructions are written in Hum, they can be understood equally well by humans, robots, and sim-bots. When we run the actual business, the instructions are executed by humans and/or robots. When we simulate the operation of the business, the instructions are performed by sim-bots. The same system can be used to operate the business in the real world or in a virtual world. In fact, we may want to test our processes in the virtual world before running them in the real-world.
--- Role: (role) << Actors are assigned roles Action: (action invoked in a task frame step) << Goal Frames invoke actions. . (instruction) << Actors execute instructions. . (instruction) . (instruction) To: (instruction used elsewhere in this frame) << Explain detail in more detail. . (instruction) . (instruction) . (instruction) ---
The purpose of a Dictionary Frame is to describe the vocabulary of the task world. Dictionary items map new concepts to concepts that the Hum system already knows. The Hum system already understands terms such as: order, order item, bill-of-material, material, part, assembly, container, person, worker, employee, organization, roles, measure, metric, money, cost, price, account, resource, resource pool, inventory, and more.
The design of the dictionary notation is meant to allow people to describe terms in a natural style. The style is close to written English in this case.
Syntax:
--- Dictionary: A (name) is a (name). ("a" and "an" are interchangeable.) (name = noun phrase) A (name) attributes include (name), (name), (name), (name), and (name). ---
Example:
--- Dictionary: Coffee-Mech Facts. . A coffee-mech is a robot. . A coffee-mech attributes include make, model, and software-release. . JavaBot is a synonym for coffee-mech. . SN is shorthand for serial-number. --- Dictionary: Employee Relationships. . A mentor is an employee. . An employee is a worker. (Some workers are employees.) . A contractor is a worker. (Some workers are contractors.) . A worker is a person. . A supervisor is an employee. ---
The dictionary accommodates acronyms with the phase: "... is shorthand for ..." Synonyms are recorded with the phrase: "... is a synonym for ..."
--- Dictionary: . QOH is shorthand for quantity-on-hand. . Client is synonym for customer. ---
Shorthand
allows the programmer to substitute a short term for a longer one
at the time that a statement is entered.
The system immediately replaces the shorthand token with the full term.
"Smart edit" tools are expected to implement this feature.
Synonyms are used to indicate a word or phrase that can be mapped to another word or phrase which is already known to the system. When the system interprets statements, it will use synonyms to match a statement to similar statements. Synonyms allow a statements to assume two or more alternate forms.
Do not declare a synonym when you should declare a subtype.
Synonyms may be used where they conform to normal usage in the parlance of the industry or shop. Unlike a shorthand, a synonym is not replaced on input. The statement is stored in the frame base with the synonym intact. Thus, you can use synonyms when they make statements and instructions more human-readable.
Enumerations are sets of values that describe a kind of attribute. For example: Colors are given names. The set of names that might describe a color constitute an enumeration.
--- Dictionary: A car may be described by its body color. Color categories include red, green, blue, yellow, orange, brown, . black, white, grey, purple, mauve, maroon, tan, pink, . (colors that reference something else ...) . silver, gold, copper, bronze, ivory, ebony, cobalt, cyan, taupe, charcoal, . lavender, lilac, rose, maize, indigo, magenta, chartreuse, . cranberry, raspberry, burgundy, apricot, peach, cream, . navy blue (which navy?), royal purple (which royalty?), . sky blue, forest green. ---
One purpose of a view frame is to indicate how a business entity (entity) is displayed. A business entity is an object instance that appears in the problem domain. It typically will have several attributes of different types.
View frames represent "forms" (fill-in the blank forms). They are intended for text-mode displays. They can be rendered as forms in almost any run-time environment including web-pages, applets, MS-Windows, X-Windows, Java applications, et cetera.
A view frame may be used for display or for input or for both. A view invoked by "Ask view-name." will update data. A view invoked by "Show view-name." will only display data.
--- View: (entity name) label: [attribute name] << text field (1) choice one (2) choice two (3) choice three << radio buttons . (1) attribute = value1 << attribute set to value . (2) attribute = value2 . (3) attribute = value3 [1] pepperoni [2] sausage [3] green pepper << check boxes . [1] attribute1 [2] attribute2 [3] attribute3 << elements set true/false crust: [crust] << combo box because crust is a category description: [text-attribute 5] << multi-line (text area) box of 5 lines [[ Place Order ]] Send my order to the kitchen. . [[ Place Order ]] Deliver [pizza] order. << Button sets goal. ---
[name]
binds to an attribute of the entity (given after "View:").
[entity attribute]
to resolve ambiguity.
[name 9]
indicates a multi-line text box.
[1]
indicates a check box.
(1)
indicates a radio button.
[[ Button Label ]]
indicates a push-button.
. [[ Button Label ]] Goal-statement.
[pane: view-name]
causes another pane to be nested
within the current pane. The other pane is defined in its own view frame.
[link: text | URI ]
indicates a hyperlink with the given text and URI.
[link: text ]
indicates a hyperlink to a local page with the given text.
The URI is derived from the text to point to a local page.
(This is how many wiki links work.)
The following syntax expands the notation to include something like a wiki mark-up.
This provides a way to format content
and avoid the need to drop into HTML.
Hum notations are meant to be as close to written English
as possible.
In this case, we have adapted some ideas from wiki mark-up to achieve that goal.
--- View: (Example of wiki mark-up usage.) ! First-Level Heading (a main heading) !! Second-Level Heading (a sub-heading) !!! Third-Level Heading (a sub-sub-heading) * First list item ** Indented list item *** Twice indented Emphasis is indicated as follows: a pair of asterisk indicates *bold emphasis* a pair of tilde indicates ~italic emphasis~ a pair of underscore indicates _underscore emphasis_ . Table of workers. (The next line maps attributes to columns.) | name | seniority | department | manager | ___ (Begin line with 3 or more "_" or "-" to indicate a horizontal-rule.) .HTML (Signals that mark-up has switched to HTML.) Raw HTML may be needed for features that are not available the Hum mark-up notation. For example, if you wanted to include an image map, inserting raw HTML would be a way to do that. .End HTML ---
The purpose of a Dialog Frame is to describe a dialog between the user and the system. In the notation, a line starting with "U:" is something the user might say. A line starting with "S:" is the system's dialog response. A line starting with a dot "." is the system's action. This notation is the Hum equivalent of the Artificial Intelligence Markup Language (AIML) XML notation for natural language software actors.
In the Hum system, some dialogs are automatically constructed by the system. For example: When given a user goal, the Planner will construct a plan tree from task frames by back-chaining. When the plan tree is complete, the Planner will then determine what data is required to articulate the plan. Some data may be in the world memory and some may be needed from the user. The system's user interface actor will ask the user for needed data using whatever medium is available. If we are in contact with the user via a browser or IM-client, an interactive dialog will be conducted by the Planner`s Scribe.
--- Dialog: User enters site. U: Knock. (User appears at entry.) S: Hello. What can I do for you? . Show 'Activities'. U: I would like to [act]. (Browse Catalog, Check Order Status, Cancel Order, Open Account) S: An excellent choice! . Show [act]. . Switch context to [act]. --- Dialog: User browses product catalog. Context: Browse Catalog U: I want * [product category]. U: Show me * [product category]. U: Do you have * [product category]? S: Here are the different kinds of [product category]. . Show [product category]. (Show view that matches the product category.) . Add [product category] to context. --- Dialog: User is looking at specific product category. Context: Media U: Show me * by [artist]. S: Let us see if we have anything indexed that way. . Show [product category] items by [artist]. . (If there are none, the "Show" format will say so.) --- U: I want to buy [item name]. U: I want to buy [item code]. S: [item name] is now in your shopping cart. You may remove it later if you change your mind. . Put [item] in shopping-cart. ---
Think more carefully about how [entity] (see above "[item]") in dialog is related to a noun in an action statement or goal statement.
Dialog frames require a full chapter to explain them. For a overview, read this decomposition of the example above:
. Show ...
" instructions
are directed to the Scribe.
Here is the proverbial "Hello World" example:
--- Dialog: Hello world example. U: Knock knock. (User appears at our entry.) S: Who's there? . Set context to "first name". --- Context: first name. U: * S: * who? . Set context to "last name". . Assert: User's first name is *. --- Context: last name. U: * S: Hello, [firstName] *. . Assert: User's last-name is *.
In the example above, the "Assert:" instructions go to the "Assert" actor.
Other instructions go to the Scribe by default because no role is indicated.
Roles are indicated by the instruction syntax
". (role): ...
"
- with a role-name and a colon preceding the statement.
This is the same syntax that we use in task frames and Action Frames
to indicate what role is performing an instruction.
Data frames are used to communicate data. They are used in message payloads between actors and resource managers, and to record configuration data. Hum authors (programmers) will rarely need to write data frames but may want to read them.
--- Data: (data set name) << Indicate a data frame. Give the frame a name/title. Worker << The following data is for a worker (entity). . ID: (string) << The system knows an ID should be unique. . name: (string) << provides the data value for worker's "name" attribute. . Home Address << "Home Address" is an embedded entity. . . line1: (string) . . line2: (string) . . postal code: (string) << "Reader" and "Smart Editor" validate values. . age: (string) << This value should be a positive integer. Site << The following data is for a Site (entity) . name: (string) << name of site . description: << The description of the site is in text format. """ << Arbitrary text delimited by triples as shown here. (text) << The text data starts on the line after the triple. """ << A triple (""") or (''') starts and ends the text. . Site Address << "Site Address" is an embedded entity. . . line1: (string) . . postal code: (string) ---
The comments in the example above follow the " <<" marker. The comments indicate how the data frame notation works.
In this example, we have a Worker entity and a Site entity. The Worker has four attributes: ID, name, Home Address, and age. The Home Address attribute is another entity embedded in the Worker entity data. The indentation indicates that the Home Address belongs to the Worker.
The Site entity has three attributes: name, description, and Site Address. The value of the description attribute contains multiple lines of text between lines that start with the triple quote (""" or '''). You can put any text between the triple quotes except for another line that starts the same way. (That would confuse the data reader.)
Within a Data Frame, an attribute might contain a table. This is appropriate when the attribute is a collection of "child" entities and the child entities have a "flat" structure. For example, a worker's weekly schedule might look like this:
--- Data: Worker's Scheduled Hours Worker . ID: 12345 . name: Robin Good . weekly hours: """ table of weekly-hours delimited by | | Day | Begin | End | | Monday | 0600 | 1400 | | Tuesday | 0600 | 1400 | | Wednesday | 0600 | 1400 | | Thursday | 0600 | 1400 | | Friday | 0600 | 1400 | """ ---
A table is multi-line text enclosed in triple quotes. The table text follows a special notation.


Vienna, 2011
Edition: 1.0 (Alpha)
This is an original digital text
All rights reserved!
Arabia › Northern Group › Syro-Mesopotamian fringe
Bedouin dialect, minority variety
Because the official language of the region is Turkish, the Arabic dialect of the city of Urfa is a minority language. Similar varieties of Arabic are spoken in many villages and smaller towns (e.g. Harran and Akçakale) situated between Urfa and the Syrian border. Urfa Arabic is linguistically very close to the dialects of the sheep and goat breeding nomads (the so-called Shawāya) of the Syrian Steppe and arguably constitutes the northernmost variety of the Arabian Bedouin dialects. Tribal structures among the local Arabic speakers (estimated to be around 150,000) are still very strong, and the relatively strict endogamy results in a high proportion of first language speakers even among the youngest generation. Urfa Arabic is usually not written; but there are internet sites containing phrases, songs, and proverbs in vernacular Arabic written in Latin script.
Although the existence of Arabic speaking groups in the region has been known since at least the 19th century, the dialect is still poorly documented. A very short grammatical sketch is Procházka 2003, three texts with English translation are found in Procházka 2013, and a comparison of Urfa Arabic with other peripheral dialects of the region is Procházka 2006.
None.
None.


Behavior
Wartortle is dedicated to his coach. He is more aggressive than a squirt. When the warthorl hunts, he hides under the water and suddenly emerges to catch the victim by surprise. As you know, Wartortlees are very strong Pokémon and have a lot of scratches on their shells from past battles. They are considered good pets, because they live a very long time. It is believed that they can live 10,000 years, but this is probably a myth (no one has lived so much to test).


Zend Framework
LICENSE
This source file is subject to the new BSD license that is bundled with this package in the file LICENSE.txt. It is also available through the world-wide-web at this URL: http://framework.zend.com/license/new-bsd If you did not receive a copy of the license and are unable to obtain it through the world-wide-web, please send an email to<EMAIL_ADDRESS>so we can send you a copy immediately.
boolean
$_httpMethodOverride= 'false'
Override HTTP PUT and DELETE request methods?
false
DetailsaddPrefixPath(
string $prefix, string $path
)
:
void
Add prefix path for loading Extensions
| Name | Type | Description |
|---|---|---|
| $prefix | string | |
| $path | string |
addPrefixPaths(
array $spec
)
:
void
Add multiple Extension prefix paths at once
| Name | Type | Description |
|---|---|---|
| $spec | array |
arrayUnique(
$array
)
:
array
Utility method to apply array_unique operation to a multidimensional array.
| Name | Type | Description |
|---|---|---|
| $array | array |
| Type | Description |
|---|---|
| array |
detectType(
\Zend_Feed_Abstract|\DOMDocument|string $feed, $specOnly
=
false
)
:
string
Detect the feed type of the provided feed
| Name | Type | Description |
|---|---|---|
| $feed | \Zend_Feed_Abstract|\DOMDocument|string | |
| $specOnly |
| Type | Description |
|---|---|
| string |
getHttpClient(
)
:
\Zend_Http_Client_Abstract
Gets the HTTP client object. If none is set, a new Zend_Http_Client will be used.
| Type | Description |
|---|---|
| \Zend_Http_Client_Abstract |
getHttpMethodOverride(
)
:
boolean
Get the HTTP override state
| Type | Description |
|---|---|
| boolean |
getPluginLoader(
)
:
\Zend_Loader_PluginLoader_Interface
Get plugin loader for use with Extensions
| Type | Description |
|---|---|
| \Zend_Loader_PluginLoader_Interface | $loader |
import(
$uri, string $etag
=
null, string $lastModified
=
null
)
:
\Zend_Feed_Reader_FeedInterface
Import a feed by providing a URL
| Name | Type | Description |
|---|---|---|
| $uri | ||
| $etag | string | OPTIONAL Last received ETag for this resource |
| $lastModified | string | OPTIONAL Last-Modified value for this resource |
| Type | Description |
|---|---|
| \Zend_Feed_Reader_FeedInterface |
importFeed(
\Zend_Feed_Abstract $feed
)
:
\Zend_Feed_Reader_FeedInterface
Import a feed by providing a Zend_Feed_Abstract object
| Name | Type | Description |
|---|---|---|
| $feed | \Zend_Feed_Abstract | A fully instantiated Zend_Feed object |
| Type | Description |
|---|---|
| \Zend_Feed_Reader_FeedInterface |
importFile(
string $filename
)
:
\Zend_Feed_Reader_FeedInterface
Imports a feed from a file located at $filename.
| Name | Type | Description |
|---|---|---|
| $filename | string |
| Type | Description |
|---|---|
| \Zend_Feed_Reader_FeedInterface |
| Exception | Description |
|---|---|
| \Zend_Feed_Exception |
importString(
string $string
)
:
\Zend_Feed_Reader_FeedInterface
Import a feed froma string
| Name | Type | Description |
|---|---|---|
| $string | string |
| Type | Description |
|---|---|
| \Zend_Feed_Reader_FeedInterface |
isRegistered(
string $extensionName
)
:
boolean
Is a given named Extension registered?
| Name | Type | Description |
|---|---|---|
| $extensionName | string |
| Type | Description |
|---|---|
| boolean |
registerExtension(
string $name
)
:
void
Register an Extension by name
| Name | Type | Description |
|---|---|---|
| $name | string |
| Exception | Description |
|---|---|
| \Zend_Feed_Exception | if unable to resolve Extension class |
setCache(
\Zend_Cache_Core $cache
)
:
void
Set the feed cache
| Name | Type | Description |
|---|---|---|
| $cache | \Zend_Cache_Core |
setHttpClient(
\Zend_Http_Client $httpClient
)
:
void
Set the HTTP client instance
Sets the HTTP client object to use for retrieving the feeds.
| Name | Type | Description |
|---|---|---|
| $httpClient | \Zend_Http_Client |
setHttpMethodOverride(
boolean $override
=
true
)
:
void
Toggle using POST instead of PUT and DELETE HTTP methods
Some feed implementations do not accept PUT and DELETE HTTP methods, or they can't be used because of proxies or other measures. This allows turning on using POST where PUT and DELETE would normally be used; in addition, an X-Method-Override header will be sent with a value of PUT or DELETE as appropriate.
| Name | Type | Description |
|---|---|---|
| $override | boolean | Whether to override PUT and DELETE. |
setPluginLoader(
\Zend_Loader_PluginLoader_Interface $loader
)
:
void
Set plugin loader for use with Extensions
| Name | Type | Description |
|---|---|---|
| $loader | \Zend_Loader_PluginLoader_Interface |


Preparation time
less than 30 mins
Cooking time
30 mins to 1 hour
Serves
Serves 8
Dietary
This recipe for delicious vegetarian bolognese sauce makes enough for 2 meals. Try it with rice and chilli, or as a lasagne or even topped with mash. See the recipe for details.
Heat a large sauté pan or casserole dish until medium hot. Add the olive oil, onions, carrots and celery and cook over a medium heat for 5 minutes. You want them to soften but not colour – you can put a lid onto the pan to help keep the moisture in and steam the vegetables at the same time.
Add the thyme and garlic and cook for another minute then add the tomato purée and turn the heat up. Stir well so that the tomato purée goes all through the vegetables then add the Puy lentils and mix once more.
Tip in the tinned tomatoes and the vegetable stock, stir well and bring to the boil. Turn the heat down to a gentle simmer and cook for 20-25 minutes until the lentils are tender and the sauce reduced slightly. Add the balsamic vinegar and season with salt and pepper.
When the sauce has only 15 minutes left to cook, bring a large saucepan of salted water to the boil. Add the pasta and cook to al dente according to packet instructions, then drain, reserving some of the cooking water.
You have enough sauce to serve 8 people. To serve 4, set aside half the sauce at this point. (See the "tips" section for ideas.)
Tip the drained pasta into the sauté pan with the sauce and mix well, adding the reserved pasta water if necessary to coat all the pasta in sauce. Serve straightaway with a green salad and a grating of cheese.


Banks use the idea of risk to make decisions about how much money they will lend. We'll look at a simplified example of how this works, though the reality is, of course, more complicated. This will still give you an idea, fundamentally of how it works.
in-context


CJI Ranjan Gogoi to retire on November 17, sits in bench for last time
Justice Gogoi sat in the bench with chief justice-designate S A Bobde for just four minutes, during which Supreme Court Bar Association president Rakesh Khanna expressed gratitude on behalf of the Bar to the chief justice.
Outgoing Chief Justice of India Ranjan Gogoi will demit office on November 17. CJI sat on the bench for the last time in court number 1 of the Supreme Court today.
Court number 1 of the apex court is the courtroom of the Chief Justice of India.
Justice Gogoi sat in the bench with chief justice-designate S A Bobde for just four minutes, during which Supreme Court Bar Association president Rakesh Khanna expressed gratitude on behalf of the Bar to the chief justice.
An apex court official said Justice Gogoi would visit Raj Ghat to pay homage to Mahatma Gandhi. He had also visited the Raj Ghat on October 3 last year after taking oath as the CJI.
Later in the day, Justice Gogoi will likely to have a video conference with 650 high court judges across the country and 15,000 judicial officers. He is likely to deliver his message to all the judges and judicial officers.


Salutations
Who am I well that's a bit complicated. Tho to get to the point I am a front end web developer and Japanese anime fan. Who loves to solve all types of challenges. Never taking shortcuts I thoroughly love solving problems and aim to expel the very best of my abilities. Especially if it involves mobile UX designs. I just love shrinking sites into more usable and responsive layouts.


CS 106S is a survey course on the applications of fundamental computer science concepts from CS 106B/X to problems in the social good space (such as health, government, education, and environment). Each week consists of in-class activities designed by student groups, local tech companies, and nonprofits. Some of the topics we will cover include mental health chatbots, tumor classification with basic machine learning, sentiment analysis of tweets on refugees, and matching algorithms in the context of COVID-19. Recommended prerequisite/corequisite: CS 106B or CS 106X.
News
Thanks for coming the first class! We've posted slides, starter code, and solutions for the first lecture in the syllabus section below. We're sorry about the audio issues for those who participated on Zoom. We're working on getting it sorted out for next week.
Welcome to CS106S! Our first class will be Thursday September 23, 2021 at 2:45 P.M. PDT in Lathrop 292, though we encourage you to participate via Zoom. (We emailed you the Zoom link; send us an email if you can't find it!) We can't wait to see you in class!
Course Details
We're looking forward to a great quarter with you in CS106S! We know you are being equipped with the tools to make super cool stuff. However, sometimes it is difficult to see where these tools fit in the larger scheme of things. We want to show you ways to put the skills you have learned to good social use! Here are our objectives:
- Awareness: For students to gain awareness about the applicability of technology and computer science to enact social good in the world.
- Exposure: For students to learn how to utilize their skills to build tools and projects that create positive social impact.
- Utilization: For students to gain exposure to the variety of current projects and efforts to use computer science for social good.
Now, let's get into some important details: expectations, grading, and meeting time!
Student Expectations
Students are expected to attend class each week (in person or on Zoom) and participate in class lectures, discussions, and exercises. Every week will have a check-off form with some simple questions from class and feedback prompts for the teaching team. This will be the way we check your attendance.
Grading
Students will be graded on the basis of attendance and participation. Participation and attending a minimum of 8 out of 9 classes are requirements to receive credit. In the case that a student will miss more than one class due to extenuating circumstances, please contact the teaching staff to receive an excused absence (e.g., illness).
Meeting Time & Coursework
CS106S will meet every Thursday afternoon from 2:45p to 4:45p PT. The course will meet in-person in Lathrop 292, though we encourage you to join via Zoom. (The link was sent out to all enrolled students via email; send us an email if you don't have the link.) Students will receive 1 unit of S/NC credit. Except in cases where students miss class (which we will handle on a case by case basis), no work will be required outside of our class meetings.
Auditing
We welcome auditors! Send an email to<EMAIL_ADDRESS>to be added to the mailing list and to receive the Zoom link. Due to space constraints and social distancing limitations, we can't accomodate auditors in-person.
Stanford Policies
All students are expected to abide by Stanford’s Honor Code and to wear a mask if attending in-person.
Students with Documented Disabilities
Students who may need an academic accommodation based on the impact of a disability must initiate the request with the Office of Accessible Education (OAE). Professional staff will evaluate the request with required documentation, recommend reasonable accommodations, and prepare an Accommodation Letter for faculty dated in the current quarter in which the request is being made. Students should contact the OAE as soon as possible since timely notice is needed to coordinate accommodations. The OAE is located at 563 Salvatierra Walk (phone:<PHONE_NUMBER>)
Instructors
Matthew Early
Miles McCain
Dr. Katie Creel
Andy Jin
Cooper De Nicola
Questions? Contact us at<EMAIL_ADDRESS>Syllabus
Note: this syllabus is subject to change.
Introduction to JavaScript — 9/23, Matthew and Miles — Slides Starter Code Solution
What is Social Good? — 9/30, Dr. Katie Creel — Slides
Sentiment Analysis and Refugee Tweets — 10/7, Matthew — Slides Starter Code Solution (Basic) Solution (TF-IDF, Advanced)
Open Source Software and Social Good — 10/14, Miles — Slides
Cancer Diagnosis with K-nearest Neighbors — 10/21, Matthew
COMPAS and Algorithmic Bias — 10/28, Miles
Cryptography / Matching Algorithms — 11/4, Cooper
ELIZA — 11/11, Andy
CS + Social Good Speaker Panel — 11/18, teaching staff
No class!
AMA Responses
Thanks for sending all your questions in! We've compiled our responses below. Feel free to reach out to us or ask in class if you have additional questions!
What's a good class to take after 106B for someone who's not a CS major but wants to keep some CS skills without spending tooooo much time on homework? New
Carta's hours-per-week feature is definitely your friend here. :D Here are some of my suggestions:
- CS 51 + CS 52! CS Studio is a really fun class and great way to use your CS skills for social good! Definitely more going on than in this class, since you are expected to build something by the end, but you will have a team to support you and there's no letter grade at stake. Applications will probably open in the next couple of weeks -- join our mailing list to get notified when they open!
- CS 106L, if you're interested in learning C++ standard libraries (that is, what's used in the "real world," not just the Stanford version you see in 106B).
- CS 109, if you're okay/good with math/probability. 109 has a reputation of being the chillest class in the CS core. At the end you do some really cool machine learning stuff that totally blew me away! That said, it is still a 5 unit class, and the only all-nighter I've ever had to pull was when I severely underestimated how long the last 109 homework would take.
- CS 124, if you're interested in NLP (e.g., if you thought week 3 of this class was interesting!). It's 4 units and generally pretty chill, with the exception of the first assignment (writing a ton of regex) and the final (group) project (building a pretty robust chatbot).
- CS 182, if you're interested in ethics (which I assume you are if you're in this class!) and are okay with writing. I haven't taken this class yet (although it's definitely on my list!), but my friends who have said it is fairly similar to stuff we will be talking about week 6.
Can sentiment analysis be applied to things such as emojis and other characters? New
Yes, absolutely! You could treat the emojis (or whatever character(s) in question) just like how we treated the words in class week 3 and do the exact same process! Of course, you will need data that comes from a source that has a lot of emojis, but Twitter definitely fits that bill!
Are there any good internship opportunities that fit with the material covered in this class? New
Yes!! Definitely keep an eye out for CS+SG's fellowships program! This is a program where the fellowship subteam matches students who apply with local non-profits/companies that have a social good-based mission to work together in a summer internship. Applications will open in winter (probably mid January), and you should join our mailing list to get the latest info!
What major(s) should I consider if I'd like to know more about ethics & CS?
Great question! While there are lots of ways to engage with ethics within the CS major, you might also consider Symbolic Systems and STS (Science, Technology, and Society) if you'd like to embed ethics even more deeply in your undergraduate education. You might also consider looking at the Ethics in Society program, which offers an Ethics and Technology minor.
Where is the best place to learn more about the M-E-R-N stack mentioned in week 1?
The MERN stack is a great way to build an entirely JavaScript web application. You can learn more about it here.
Does social good always come at the cost of profit?
That's a big question. You should talk about it with Katie!
What is CS + Social Good? What does CS+Social Good do as a club? How do people get involved? What are some sample projects and their measurable impact?
Thanks for these great questions! Our mission is to create a community of technologists, designers, and thinkers passionate about maximizing the benefits of technology and mitigating its harms. Our end-of-year booklet highlights all our key initiatives, projects, and impact from the most recent school year: bit.ly/cssg-eoy-2021.
To summarize, we lead several student-run courses (CS 106S, CS 51+52 "Studio", CS 21SI "AI for Social Good"), the tech-for-good Fellowships program, discussions, education outreach, and Impact Lab (which is a research lab connecting students to tech for good projects).
To stay updated on our events and projects, join our mailing list by signing up here — bit.ly/cssg-interest-2122. If you'd like to join CS+Social Good, our applications are currently open till Saturday, October 2nd, at bit.ly/cssg2122. Note that you do not need to join CS+SG to attend discussions events, or apply for opportunities like Fellowships, Impact Lab, or Studio.
How competent do you have to be in coding to be involved with CS for Social Good?
Not very - as long as you are comfortable with CS106A-level material (e.g., loops, conditionals, arrays), you will be fine!
Any good internships for frosh with up to CS 106B experience? Any faculty willing to do research for the same frosh?
What a great opportunity for some self-promo!
I would strongly recommend you apply to CS+SG's fellowship and/or Impact Lab programs! The CS+SG fellowship program tries to match Stanford students with local social-good-adjacent non-profits looking for would-be interns with some CS experience to help them over the summer. Impact Lab is a CS+SG program that pairs CS students with social-impact-focused Stanford research projects. Both are fantastic opportunities that frosh have often been involved in in the past, including frosh with no prior intern/research experience.
And speaking of various CS+SG programs, I can't forget about Studio! Studio is a two-quarter pair of CS courses (CS 51 and CS 52, winter and spring). In the first quarter, students work with local community partner organizations to identify a problem and plan an app/website/whatever to go about trying to solve it, while in the second quarter, students actually implement their project.
Fellowships and Impact Lab will have their application cycle in Winter, and Studio applications will be due mid/late October. For more info on when applications are due, you should definitely join the CS+SG mailing list at bit.ly/cssg-interest-2122!
The CS department also has the CURIS program for undergrad research. If you're interested in research, this is a great way to get first-hand experience; some projects may require a more substantial background (e.g., the AI/ML ones), but definitely check out the offerings and reach out to professors of the ones you're interested in.
How does JavaScript interact with other scripts from languages like Python?
There are a few ways that you can use JavaScript to complement code in other languages, like Python. The most common situation where JavaScript enters the mix is when you have a website running on a server somewhere and that server code is written in a different language, like Python. (If this is confusing for you, don't worry! This is a more advanced topic for future classes.) If you want your website to be interactive, however, you'll need to write code that runs in the browser — and that's where JavaScript comes in.
Using technologies like Node.js also makes it possible for you to run JavaScript scripts outside of the browser, so you're not limited to using your new JavaScript skills just for websites.
(If you're curious, it's also possible to run JavaScript in Python scripts and vice versa using subprocesses, but don't worry about this. It's something you learn in CS 110/111.)
What is CS 106M like?
Unfortunately none of us really have a sense of what 106M is like, as it didn’t exist when any of us took 106B. From looking at the website, my impression is that 106M is more focused on implementing algorithms, whereas 106S focuses more on topics that we are able to tie back to social good. And to be clear: it’s not our intention for students to only be able to take one of 106S or 106M — the two classes just happened to be scheduled at the same time this quarter, and there’s not really anything we can do about it. :(
Are there tutorials / office hours?
Since CS 106S is a 1-unit S/NC class, we don’t have formal office hours. That being said, if you want to meet with the teaching team, feel free to send us an email or find us after class!
Difficulty of getting into CS coterm as a non-CS major? I am a history major and I want to have a good strategy for applying.
The most important thing is to have done a solid chunk of the CS core (and ideally some electives as well) and to have done well in them. Additional tips would be to highlight the reasons you wish to pursue a CS coterm, such as opening up career opportunities, as well as articulate the general direction you wish to steer your coterm toward, such as specific tracks and even classes. For non-CS majors, you could explore how having a more technical background through the COterm could help you pursue your primary/additional fields of interest, such as history, with greater depth and insight. That said, the most important thing for CS Coterm is to have a strong track record of performance in CS classes—both core and non-core.
Can we make a class chat? I'd love to see if other people in the class would want to work on some projects together (outside of class).
You’re absolutely welcome to create a student group chat! We encourage someone in the class to create a GroupMe. While this would be an unofficial student group chat (that is, the teaching team wouldn’t be in it), we think it’d be a great way for you all to foster community.


{% include "people/altman.html" %}
{% include "people/anwar.html" %}
{% include "people/barrette.html" %}
{% include 'people/chebarro.html' %}
{% include "people/deming.html" %}
{% include "people/goldberg.html" %}
{% include "people/gossel.html" %}
{% include 'people/lang.html' %}
{% include 'people/lian.html' %}
{% include 'people/liebermeister.html' %}
{% include 'people/miravet.html' %}
{% include 'people/pochiraju.html' %}
{% include "people/rodriguez.html" %}
{% include 'people/roth.html' %}
{% include 'people/roy.html' %}
{% include 'people/ruzic.html' %}
{% include 'people/srinivasan.html' %}
{% include 'people/sundstrom.html' %}
{% include "people/sun.html" %}
{% include 'people/szigeti.html' %}
{% include 'people/wang.html' %}
{% include "people/wu.html" %}
{% include "people/zheng.html" %}


astropy.constants contains a number of physical constants useful in Astronomy. Constants are Quantity objects with additional meta-data describing their provenance and uncertainties.
To use the constants in S.I. units, you can import the constants directly from the astropy.constants sub-package:
>>> from astropy.constants import G
or, if you want to avoid having to explicitly import all the constants you need, you can simply do:
>>> from astropy import constants as const
and then subsequently use for example const.G. Constants are fully-fleged Quantity objects, so you can easily convert them to different units for example:
>>> print const.c
Name = Speed of light in vacuum
Value = 299792458.0
Error = 0.0
Units = m / (s)
Reference = CODATA 2010
>>> print const.c.to('km/s')
299792.458 km / (s)
>>> print const.c.to('pc/yr')
0.306594845466 pc / (yr)
and you can use them in conjunction with unit and other non-constant Quantity objects:
>>> F = (const.G * 3. * const.M_sun * 100 * u.kg) / (2.2 * u.au) ** 2
>>> print F.to(u.N)
0.367669392028 N
It is possible to convert most constants to cgs using e.g.:
>>> const.c.cgs
<Quantity<PHONE_NUMBER>0.0 cm / (s)>
However, some constants are defined with different physical dimensions in cgs and cannot be directly converted. Because of this ambiguity, such constants cannot be used in expressions without specifying a system:
>>> 100 * const.e
ERROR: TypeError: Constant 'e' does not have physically compatible units
across all systems of units and cannot be combined with other values without
specifying a system (eg. e.esu) [astropy.constants.constant]
...
>>> 100 * const.e.esu
<Quantity 4.80320450571e-08 Fr>
Contains astronomical and physical constants for use in Astropy or other places.
A typical use case might be:
>>> from astropy.constants import c, m_e
>>> # ... define the mass of something you want the rest energy of as m ...
>>> m = m_e
>>> E = m * c**2
>>> E.to('MeV')
<Quantity 0.510998927603 MeV>
The following constants are available:
| Name | Value | Unit | Description |
|---|---|---|---|
| G | 6.67384e-11 | m3 / (kg s2) | Gravitational constant |
| L_sun | 3.846e+26 | W | Solar luminosity |
| M_earth | 5.9742e+24 | kg | Earth mass |
| M_jup | 1.8987e+27 | kg | Jupiter mass |
| M_sun | 1.9891e+30 | kg | Solar mass |
| N_A | 6.02214129e+23 | 1 / (mol) | Avogadro’s number |
| R | 8.3144621 | J / (K mol) | Gas constant |
| R_earth | 6378136 | m | Earth equatorial radius |
| R_jup | 71492000 | m | Jupiter equatorial radius |
| R_sun | 695508000 | m | Solar radius |
| Ryd | 10973731.6 | 1 / (m) | Rydberg constant |
| au | 1.49597871e+11 | m | Astronomical Unit |
| c | 299792458 | m / (s) | Speed of light in vacuum |
| e | 1.60217657e-19 | C | Electron charge |
| h | 6.62606957e-34 | J s | Planck constant |
| hbar | 1.05457173e-34 | J s | Reduced Planck constant |
| k_B | 1.3806488e-23 | J / (K) | Boltzmann constant |
| kpc | 3.08567758e+19 | m | Kiloparsec |
| m_e | 9.10938291e-31 | kg | Electron mass |
| m_n | 1.67492735e-27 | kg | Neutron mass |
| m_p | 1.67262178e-27 | kg | Proton mass |
| pc | 3.08567758e+16 | m | Parsec |
| sigma_sb | 5.670373e-08 | W / (K4 m2) | Stefan-Boltzmann constant |
| Constant(abbrev, name, value, unit, ...[, ...]) | A physical or astronomical constant. |
| EMConstant(abbrev, name, value, unit, ...[, ...]) | An electromagnetic constant. |


Monetization in video games Part 1
17 April 2020
Hi Developers,
in this article I'll be talking about several ways you can monetize your game (mobile game specifically)
I'll assume you are using Unity engine, let's be honest guys, it is so popular and offers a lot of tools when it comes to monetization leaving the easy part for you (place ads and earn money!)
of course this isn't limited just to unity, these ad networks that we will discuss I believe they also have SDKs for other engines and maybe for Native game development if required!
when it comes to monetization in games, I believe that it is very crucial to place your ads in a way without making players instantly close your game and leave a bad review for the game saying 'Too many ads!'
trust me that will prevent your game from organically growing in the store, you dont want that i guess.
Why do we need this in video games?
Obvoisly we make games for two reasons.
- We Love Making Games!
- We Make Games to make money!
let's stick with the second reason for now.
we make game to make money, so I think you didn't spend about 4-5 months making a game that will not make you money!
I think getting this part done effectively is totally worth it in terms of the revenue it generates when done well.
Guaranteed profit
if you ave made a title and don't want to make it free to play, consider forgetting putting ads in your game at all!
maybe in some rare cases you can, but that's not the point of this article, maybe I'll talk about it in another article. Just to give myself some space. Anyway,
Making your game paid guarantees you the full profit of your game depending on your downloads, I mean for example if you make your game for 0.99$ (one dollar - that cent is subtracted for tax purposes).
if you sell million copies then your estimated revenue is 'basically' Million dollars. but I'll be honest with you, that's is a kind of hard and tricky in the same time to achive. Aart from that, users must understand the value of your game before they buy and so on.
if you are have a Google Play developer console account you can check This Guide from Google
If your app is largely designed for casual use, advertising and in-app products are likely going to be effective forms of monetization.
In general, parents are more likely to pay for an ad-free, child-friendly app than a
casual use app. Also, business users often want an ad-free, high quality app to use at
work. For cases like these, consider making your app a paid app.
I don't think you are here to read this, so I'll get straight into the point.
Revenue Generation ( Monetization in free apps )
Generating Revenue from displaying ads inside some placements in your game is a way of generatig revenue, as advertisers work with ad networks (Ad providers for your game).
basically the way this works is that they pay the network for displaying ads in your game and the network shares that with you depending on the number of ad impressions your game requests wich depends on your DAU (Daily active users).
but all of that can Make you a millionaire or just destroy your game (if not done well).
today I'll discuss with you some of the ad networks out there and the pros and cons from my point of view and my experience with them.
1. Unity Ads
first of all, if you are a unity developer consider talking a look at Getting Started Guide From Unity
Unity ads help publishers integrate video ads into their games that maximize revenue and improves the user experience. They offer the highest revenue per user of any rewarded video ad network.
They work with publishers such as SEGA, Halfbrick, and Next Games to monetize their user base with video ads. Developers can offer gamers a variety of options such as additional life, currency, score increases and more in exchange for watching a video.
This ad network focuses on increasing the lifetime value of a user instead of mere fill rates and eCPM values. The setup is simple, especially for those using the Unity engine. If not, you’ll only need to implement their universal SDK.
Learn More
2. Google Admob
AdMob is a Google-owned and operated company that has been conducting business since 2012. They serve over 200 billion ad requests worldwide every month with over 1 million advertisers and have 1 million apps currently running on the AdMob mobile ad network.
Some features include being able to cross-sell other apps for free using house ads, running direct deals with advertisers and auto updates through Google Play services without needing to modify your SDK. Platforms supported include iOS, Android, Unity, and Cocos2d-x.
Integration With Unity Guide
Learn More
3. Facebook Ads
The Facebook Audience Network offers smart solutions to publishers to monetize their apps and websites. Their ad network is designed with user engagement and growth in mind. Publishers can choose from a range of interactive ad formats such as rewarded video, which works great for gaming apps or playable video ads.
Over 1 billion users view ads from the Facebook Audience Network each month. They also provide you with tools, support, and valuable insights to help you grow your ad revenue.
Learn More
4. IronSource
IronSource works with some of the top gaming mobile app publishers in the industry including Ubisoft, Zynga, EA, Gameloft and many more. They offer multi-platform support for iOS, Android, Unity and many more.
The company’s SDK is integrated into over 500 000 million devices while serving 1 billion daily impressions within their ad network.
Publishers get access to premium and global ad inventories ensuring they get the highest price possible for every impression. When you partner with IronSource, you can also use their leading ad formats, advanced reporting, and insights.


This documentation, and the notes that follow, are by Dale Dougherty.
indexing program for single and multivolume indexing.
Synopsis
masterindex [-master [volume]] [-page] [-screen] [filename..]
Description
masterindex generates a formatted index based on structured index entries output by troff. Unless you redirect output, it comes to the screen.
Options
-m or -master indicates that you are compiling a multivolume index. The index entries for each volume should be in a single file and the filenames should be listed in sequence. If the first file is not the first volume, then specify the volume number as a separate argument. The volume number is converted to a roman numeral and prepended to all the page numbers of entries in that file.
-p or -page produces a listing of index entries for each page number. It can be used to proof the entries against hardcopy.
-s or -screen specifies that the unformatted index will be viewed on the "screen". The default is to prepare output that contains troff macros for formatting.
Files
/work/bin/masterindex /work/bin/page.idx /work/bin/pagenums.idx /work/bin/combine.idx /work/bin/format.idx /work/bin/rotate.idx /work/bin/romanum /work/macros/current/indexmacs See Also
Note that these programs require "nawk" (new awk): nawk (1), and sed (1V).
Bugs
The new index program is modular, invoking a series of smaller programs. This should allow me to connect different modules to implement new features as well as isolate and fix problems more easily. Index entries should not contain any troff font changes. The program does not handle them. Roman numerals greater than eight will not be sorted properly, thus imposing a limit of an eight-book index. (The sort program will sort the roman numerals 1-10 in the following order: I, II, III, IV, IX, V, VI, VII, VIII, X.)
Tim O'Reilly recommends The Joy of Cooking (JofC) index as an ideal index. I examined the JofC index quite thoroughly and set out to write a new indexing program that duplicated its features. I did not wholly duplicate the JofC format, but this could be done fairly easily if desired. Please look at the JofC index yourself to examine its features.
I also tried to do a few other things to improve on the previous index program and provide more support for the person coding the index.
This section describes the coding of index entries in the document file. We use the .XX macro for placing index entries in a file. The simplest case is:
.XX "entry"
If the entry consists of primary and secondary sort keys, then we can code it as:
.XX "primary, secondary"
A comma delimits the two keys. We also have a .XN macro for generating "See" references without a page number. It is specified as:
.XN "entry (See anotherEntry)"
While these coding forms continue to work as they have, masterindex provides greater flexibility by allowing three levels of keys: primary, secondary, and tertiary. You'd specify the entry like so:
.XX "primary: secondary; tertiary"
Note that the comma is not used as a delimiter. A colon delimits the primary and secondary entry; the semicolon delimits the secondary and tertiary entry. This means that commas can be a part of a key using this syntax. Don't worry, though, you can continue to use a comma to delimit the primary and secondary keys. (Be aware that the first comma in a line is converted to a colon, if no colon delimiter is found.) I'd recommend that new books be coded using the above syntax, even if you are only specifying a primary and secondary key.
Another feature is automatic rotation of primary and secondary keys if a tilde (~) is used as the delimiter. So the following entry:
.XX "cat~command"
is equivalent to the following two entries:
.XX "cat command" .XX "command: cat"
You can think of the secondary key as a classification (command, attribute, function, etc.) of the primary entry. Be careful not to reverse the two, as "command cat" does not make much sense. To use a tilde in an entry, enter "~~".
I added a new macro, .XB, that is the same as .XX except that the page number for this index entry will be output in bold to indicate that it is the most significant page number in a range. Here is an example:
.XB "cat command"
When troff processes the index entries, it outputs the page number followed by an asterisk. This is how it appears when output is seen in screen format. When coded for troff formatting, the page number is surrounded by the bold font change escape sequences. (By the way, in the JofC index, I noticed that they allowed having the same page number in roman and in bold.) Also, this page number will not be combined in a range of consecutive numbers.
One other feature of the JofC index is that the very first secondary key appears on the same line with the primary key. The old index program placed any secondary key on the next line. The one advantage of doing it the JofC way is that entries containing only one secondary key will be output on the same line and look much better. Thus, you'd have "line justification, definition of" rather than having "definition of" indented on the next line. The next secondary key would be indented. Note that if the primary key exists as a separate entry (it has page numbers associated with it), the page references for the primary key will be output on the same line and the first secondary entry will be output on the next line.
To reiterate, while the syntax of the three-level entries is different, this index entry is perfectly valid:
.XX "line justification, definition of"
It also produces the same result as:
.XX "line justification: definition of"
(The colon disappears in the output.) Similarly, you could write an entry, such as
.XX "justification, lines, defined"
or
.XX "justification: lines, defined"
where the comma between "lines" and "defined" does not serve as a delimiter but is part of the secondary key.
The previous example could be written as an entry with three levels:
.XX "justification: lines; defined"
where the semicolon delimits the tertiary key. The semicolon is output with the key, and multiple tertiary keys may follow immediately after the secondary key.
The main thing, though, is that page numbers are collected for all primary, secondary, and tertiary keys. Thus, you could have output such as:
justification 4-9 lines 4,6; defined, 5
One thing I wanted to do that our previous program did not do is generate an index without the troff codes. masterindex has three output modes: troff, screen, and page.
The default output is intended for processing by troff (via fmt). It contains macros that are defined in /work/macros/current/indexmacs. These macros should produce the same index format as before, which was largely done directly through troff requests. Here are a few lines off the top:
$masterindex ch01
.so /work/macros/current/indexmacs .Se "" "Index" .XC .XF A "A" .XF 1 "applications, structure of 2; program 1" .XF 1 "attribute, WIN_CONSUME_KBD_EVENTS 13" .XF 2 "WIN_CONSUME_PICK_EVENTS 13" .XF 2 "WIN_NOTIFY_EVENT_PROC 13" .XF 2 "XV_ERROR_PROC 14" .XF 2 "XV_INIT_ARGC_PTR_ARGV 5,6"
The top two lines should be obvious. The .XC macro produces multicolumn output. (It will print out two columns for smaller books. It's not smart enough to take arguments specifying the width of columns, but that should be done.) The .XF macro has three possible values for its first argument. An "A" indicates that the second argument is a letter of the alphabet that should be output as a divider. A "1" indicates that the second argument contains a primary entry. A "2" indicates that the entry begins with a secondary entry, which is indented.
When invoked with the -s argument, the program prepares the index for viewing on the screen (or printing as an ASCII file). Again, here are a few lines:
$masterindex -s ch01
A applications, structure of 2; program 1 attribute, WIN_CONSUME_KBD_EVENTS 13 WIN_CONSUME_PICK_EVENTS 13 WIN_NOTIFY_EVENT_PROC 13 XV_ERROR_PROC 14 XV_INIT_ARGC_PTR_ARGV 5,6 XV_INIT_ARGS 6 XV_USAGE_PROC 6
Obviously, this is useful for quickly proofing the index. The third type of format is also used for proofing the index. Invoked using -p, it provides a page-by-page listing of the index entries.
$masterindex -p ch01
Page 1 structure of XView applications applications, structure of; program XView applications XView applications, structure of XView interface compiling XView programs XView, compiling programs Page 2 XView libraries
A multivolume master index is invoked by specifying the -m option. Each set of index entries for a particular volume must be placed in a separate file.
$masterindex -m -s book1 book2 book3
xv_init() procedure II: 4; III: 5 XV_INIT_ARGC_PTR_ARGV attribute II: 5,6 XV_INIT_ARGS attribute I: 6
Files must be specified in consecutive order. If the first file is not Volume 1, you can specify the number as an argument.
$masterindex -m 4 -s book4 book5


You can find links to the live version of my projects as well as the corresponding GitHub repository's here.
This site can be found here
Please note that unless otherwise specified the code for these projects will be in the same repository as this site
as they don't really need any special backend support to work.
-
Calculator
-
A simple web based calculator built to do basic arithmetic online.
-
Quest Tracker
-
A simple web based to do list to keep track your life quests (or if you're playing a seriously old school JRPG).
Small projects running on Node.JS
To be decided
I can't really do any web projects for this, at least not without
enduring a lot of pain that I don't really want or need to, so
for now this will lead to my repository with my solutions for the Project Euler
problems.
-
Dice Simulator
-
A simple console based dice simulator. A user enters the number of dice he wants rolled
as well as the number of sides for each die. The program will print what each die rolled.
-
Change Calculator
-
A simple console based change calculator. A user enters the amount paid by a customer as well as the customer's bill.
This small application returns the dollars, quarters, dimes, nickels and pennies the user needs to give back to the customer.


Tutorial : Sound Effect
Objects: VSoundEffectTrack, VSoundEffectEvent
A Sound Event will start playing a sound effect upon triggering. The sound that is to be played is defined by the "SoundData" property. This property must reference a valid SFXProfile object. If this object is missing or invalid, no sound effect will play.
Sound effects which play as a result of a VSoundEffectEvent will be adjusted so that the correct position and pitch are applied. Other properties, like volume, streaming or 2D/3D must be set on the SFXProfile or SFXDescription object and aren't configurable via Sound Effect Tracks or Events.
If you are creating a sequence to play in a multi-player game, Pausing and Resuming the root Controller will not affect sound effect playback on networked clients. Sound Effects are replicated on each client using NetEvents and are not controllable after creation.
How to Use:
Right-Click on your Group, go to "Add Track" and select "Add Sound Effect Track".
Right-Click on the Track and select "Add Event".
Select the newly created Event. The Property List window will refresh and inspect the Event. Change the "SoundData" property to the name of the SFXProfile you wish to have played upon triggering.