We are a group of students from the National University of Singapore in the University Scholars' Programme who have created a fire evacuation model as part of a Computational Modelling module. Navigate the pages to find out more! :D
Never tried playing with a model before? Want to learn how to make the minions move in the model? Want to learn how to play with the controls? Try out warm up exercise!
The devil in the model is fire! See how changing the location of the fire in the model affect how the minions evacuate the building. BEE DO BEE DO!
Is it possible to relax and wait when the fire alarm rings? How long can you wait? Play with the model to see how long the minions can wait before being trapped!
Some minions take a shorter time to move while others run for their lives! Play with the model to see how varying the speed of the model affects the evacuation process!
Now that you are familiar with all the parameters and control, it is time for a game! Play around with the controls and obtain a setting such that one person dies from the fire :O\ Record down your setting in the Google form provided in the page!
Imagine you are in a buidling. How long will you take to leave your room after the alarm rings? How slow or fast would you walk? Be realistic, input the values and watch yourself in the model!


10 May 2012 10:17
Occasional regionserver crashes following socket errors writing to HDFS
Hi, We're seeing occasional regionserver crashes during heavy write operations to Hbase (at the reduce phase of large M/R jobs). I have increased the file descriptors, HDFS xceivers, HDFS threads to the recommended settings and actually way above. Here is an example of the HBase log (showing only errors): 2012-05-10 03:34:54,291 WARN org.apache.hadoop.hdfs.DFSClient: DFSOutputStream ResponseProcessor exception for block blk_-8928911185099340956_5189425java.io.IOException: Bad response 1 for block blk_-8928911185099340956_5189425 from datanode <IP_ADDRESS>:50010 at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$ResponseProcessor.run(DFSClient.java:2986) 2012-05-10 03:34:54,494 WARN org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception: java.io.InterruptedIOException: Interruped while waiting for IO on channel java.nio.channels.SocketChannel[connected local=/<IP_ADDRESS>:59642remote=/ <IP_ADDRESS>:50010]. 0 millis timeout left. at org.apache.hadoop.net.SocketIOWithTimeout$SelectorPool.select(SocketIOWithTimeout.java:349) at org.apache.hadoop.net.SocketIOWithTimeout.doIO(SocketIOWithTimeout.java:157) at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:146) at org.apache.hadoop.net.SocketOutputStream.write(SocketOutputStream.java:107) at java.io.BufferedOutputStream.write(BufferedOutputStream.java:105) at java.io.DataOutputStream.write(DataOutputStream.java:90)(Continue reading)


The process of preparing an application to support more than one language and data format is called internationalization. Localization is the process of adapting an internationalized application to support a specific region or locale. Examples of locale-dependent information include messages and user interface labels, character sets and encoding, and date and currency formats. Although all client user interfaces should be internationalized and localized, it is particularly important for web applications because of the global nature of the web.
The following topics are addressed here:
In the Java platform, java.util.Locale (http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html
) represents a specific geographical, political, or cultural region. The string representation of a locale consists of the international standard two-character abbreviation for language and country and an optional variant, all separated by underscore (_
) characters. Examples of locale strings include fr
(French), de_CH
(Swiss German), and en_US_POSIX
(English on a POSIX-compliant platform).
Locale-sensitive data is stored in a java.util.ResourceBundle (http://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html
). A resource bundle contains key-value pairs, where the keys uniquely identify a locale-specific object in the bundle. A resource bundle can be backed by a text file (properties resource bundle) or a class (list resource bundle) containing the pairs. You construct a resource bundle instance by appending a locale string representation to a base name.
The Duke's Bookstore application (see Chapter 57, "Duke's Bookstore Case Study Example") contains resource bundles with the base name messages.properties
for the locales de
(German), es
(Spanish), and fr
(French). The default locale, en
(English), which is specified in the faces-config.xml
file, uses the resource bundle with the base name, messages.properties
.
For more details on internationalization and localization in the Java platform, see http://docs.oracle.com/javase/tutorial/i18n/index.html
.
Messages and labels should be tailored according to the conventions of a user's language and region. There are two approaches to providing localized messages and labels in a web application.
Provide a version of the web page in each of the target locales and have a controller servlet dispatch the request to the appropriate page depending on the requested locale. This approach is useful if large amounts of data on a page or an entire web application need to be internationalized.
Isolate any locale-sensitive data on a page into resource bundles, and access the data so that the corresponding translated message is fetched automatically and inserted into the page. Thus, instead of creating strings directly in your code, you create a resource bundle that contains translations and read the translations from that bundle using the corresponding key.
The Duke's Bookstore application follows the second approach. Here are a few lines from the default resource bundle messages
.properties
:
TitleShoppingCart=Shopping Cart TitleReceipt=Receipt TitleBookCatalog=Book Catalog TitleCashier=Cashier TitleBookDescription=Book Description Visitor=You are visitor number What=What We\'re Reading
To get the correct strings for a given user, a web application either retrieves the locale (set by a browser language preference) from the request using the getLocale
method, or allows the user to explicitly select the locale.
A component can explicitly set the locale by using the fmt:setLocale
tag.
The locale-config
element in the configuration file registers the default locale and also registers other supported locales. This element in Duke's Bookstore registers English as the default locale and indicates that German, French, and Spanish are supported locales.
<locale-config> <default-locale>en</default-locale> <supported-locale>es</supported-locale> <supported-locale>de</supported-locale> <supported-locale>fr</supported-locale> </locale-config>
The LocaleBean
in the Duke's Bookstore application uses the getLocale
method to retrieve the locale.
public class LocaleBean { ... private FacesContext ctx = FacesContext.getCurrentInstance(); private Locale locale = ctx.getViewRoot().getLocale();; ... }
The resource bundle is set with the resource-bundle
element in the configuration file. The setting for Duke's Bookstore looks like this:
<resource-bundle> <base-name> javaeetutorial.dukesbookstore.web.messages.Messages </base-name> <var>bundle</var> </resource-bundle>
After the locale is set, the controller of a web application could retrieve the resource bundle for that locale and save it as a session attribute (see Associating Objects with a Session) for use by other components or simply be used to return a text string appropriate for the selected locale:
public String toString(Locale locale) { ResourceBundle res = ResourceBundle.getBundle( "javaeetutorial.dukesbookstore.web.messages.Messages", locale); return res.getString(name() + ".string"); }
Alternatively, an application could use the f:loadBundle
tag to set the resource bundle. This tag loads the correct resource bundle according to the locale stored in FacesContext
.
<f:loadBundle basename="javaeetutorial.dukesbookstore.web.messages.Messages" var="bundle"/>
Resource bundles containing messages that are explicitly referenced from a JavaServer Faces tag attribute using a value expression must be registered using the resource-bundle
element of the configuration file.
For more information on using this element, see Registering Application Messages.
A web component written in the Java programming language retrieves the resource bundle from the session:
ResourceBundle messages = (ResourceBundle)session.getAttribute("messages");
Then it looks up the string associated with the key person.lastName
as follows:
messages.getString("person.lastName");
You can only use a message
or messages
tag to display messages that are queued onto a component as a result of a converter or validator being registered on the component. The following example shows a message
tag that displays the error message queued on the userNo
input component if the validator registered on the component fails to validate the value the user enters into the component.
<h:inputText id="userNo" value="#{UserNumberBean.userNumber}"> <f:validateLongRange minimum="0" maximum="10" /> </h:inputText> ... <h:message style="color: red; text-decoration: overline" id="errors1" for="userNo"/>
For more information on using the message
or messages
tags, see Displaying Error Messages with the h:message and h:messages Tags.
Messages that are not queued on a component and are therefore not loaded automatically are referenced using a value expression. You can reference a localized message from almost any JavaServer Faces tag attribute.
The value expression that references a message has the same notation whether you loaded the resource bundle with the loadBundle
tag or registered it with the resource-bundle
element in the configuration file.
The value expression notation is var.message
, in which var
matches the var
attribute of the loadBundle
tag or the var
element defined in the resource-bundle
element of the configuration file, and message
matches the key of the message contained in the resource bundle, referred to by the var
attribute.
Here is an example from bookcashier.xhtml
in Duke's Bookstore:
<h:outputLabel for="name" value="#{bundle.Name}" />
Notice that bundle
matches the var
element from the configuration file and that Name
matches the key in the resource bundle.
Java programs use the DateFormat.getDateInstance(int,
locale)
method to parse and format dates in a locale-sensitive manner. Java programs use the NumberFormat.get
XXXInstance(locale)
method, where XXX can be Currency
, Number
, or Percent
, to parse and format numerical values in a locale-sensitive manner.
An application can use date/time and number converters to format dates and numbers in a locale-sensitive manner. For example, a shipping date could be converted as follows:
<h:outputText value="#{cashier.shipDate}"> <f:convertDateTime dateStyle="full"/> </h:outputText>
For information on JavaServer Faces converters, see Using the Standard Converters.
The following sections describe character sets and character encodings.
A character set is a set of textual and graphic symbols, each of which is mapped to a set of nonnegative integers.
The first character set used in computing was US-ASCII. It is limited in that it can represent only American English. US-ASCII contains uppercase and lowercase Latin alphabets, numerals, punctuation, a set of control codes, and a few miscellaneous symbols.
Unicode defines a standardized, universal character set that can be extended to accommodate additions. When the Java program source file encoding doesn't support Unicode, you can represent Unicode characters as escape sequences by using the notation \u
XXXX, where XXXX is the character's 16-bit representation in hexadecimal. For example, the Spanish version of a message file could use Unicode for non-ASCII characters, as follows:
admin.nav.main=P\u00e1gina principal de administraci\u00f3n
A character encoding maps a character set to units of a specific width and defines byte serialization and ordering rules. Many character sets have more than one encoding. For example, Java programs can represent Japanese character sets using the EUC-JP
or Shift-JIS
encodings, among others. Each encoding has rules for representing and serializing a character set.
The ISO 8859 series defines 13 character encodings that can represent texts in dozens of languages. Each ISO 8859 character encoding can have up to 256 characters. ISO-8859-1 (Latin-1) comprises the ASCII character set, characters with diacritics (accents, diaereses, cedillas, circumflexes, and so on), and additional symbols.
UTF-8 (Unicode Transformation Format, 8-bit form) is a variable-width character encoding that encodes 16-bit Unicode characters as one to four bytes. A byte in UTF-8 is equivalent to 7-bit ASCII if its high-order bit is zero; otherwise, the character comprises a variable number of bytes.
UTF-8 is compatible with the majority of existing web content and provides access to the Unicode character set. Current versions of browsers and email clients support UTF-8. In addition, many web standards specify UTF-8 as their character encoding. For example, UTF-8 is one of the two required encodings for XML documents (the other is UTF-16).
Web components usually use PrintWriter
to produce responses; PrintWriter
automatically encodes using ISO-8859-1. Servlets can also output binary data using OutputStream
classes, which perform no encoding. An application that uses a character set that cannot use the default encoding must explicitly set a different encoding.


The global location of the state of Andhra Pradesh is between 77° and 84°40'East Longitude and 12°41' and 22°North Latitude.
It is located in the southeastern part of India. Andhra Pradesh is the third largest state in India. The total area that is covered by the state is about 2, 75,068 Sq.Km.
Andhra Pradesh is one of the 29 states of India, whose recorded history begins in the Vedic period. It is mentioned in Sanskrit epics such as Aitareya Brahmana (800 BCE). The Assaka Mahajanapada (700–300 BCE) was an ancient kingdom located between the Godavari and Krishna Rivers in southeastern India. After the independence of India in 1947, modern-day Andhra Pradesh was part of the Madras State.
TOP 10 TOURIST PLACES IN ANDHRA PRADESH
Tirupati
Araku valley
Rishikonda beach
Vizag
Vijayawada
Papikondalu
Mantralayam
Rajyamundry
Amaravathi
Srisailam
Most popular temples of Andhra Pradesh are
Tirumala temple at Tirupati,Diguva Mangalagiri Temple, Bhadrachalam Temple and Srisailam Lord Shiva temple.
FAMOUS FOOD OF ANDHRA PRADESH
Pesarattu. The" Pesarattu" is Green Dosa. Generally this dish is eat in breakfast or as light food. This traditional food of Andhra Pradesh is prepared with Moong dal.
Chepala Pulusu. If you are fish lover and looking for fish based dish from Andhra Cuisine. Then this Traditional dish is for you.
Gutti Vankaya Koora. Famous traditional food of Andhra Pradesh. For all vegetarian this is a must-try dish from the State.
Kodi Pulao - Chicken Pulao. Kodi means Chicken in Telugu. Its chicken Pulao dish. This dish is made by Rice, Chicken & coconut Milk.
The sweet is wrapped in a wafer-thin rice starch layer resembling paper and is stuffed with sugar, dry fruits and nuts


Control your Dolby with the onscreen instructions
Get more people to join - the more the merrier! (Or just refresh the join page, more Dolbys will fly in).
Play this music and your Dolbys will dance along.
Made with love by Ruth (aka @rumyra) for Dolby's Developer Challenge, using and their audio compressor technology.
Please use the latest browser
Featuring Guilt by Simon Heartfield


|
类摘要 |
| AndroidConfig |
Configure android application required when logs find configuration file. |
| Category |
Record logger's category information.Include appenders, level, name and so
on. |
| DefaultLogger |
Default logger object used to log message and do appenders by default
DefaultLogger.java |
| InvalidLogger |
Indicate log is invalid. |
| Level |
Indicate the log message's level. |
| Logger |
Main logger class for developer
Create a logger object by class object or tag string. |
| LoggerBuffer |
LoggerBuffer.java |
| LoggerConfig |
Logger configuration
LoggerConfig.java |
| LoggerFactory |
Logger factory is used to create logger object. |
| LoggerHolder |
Appenders's holder for async appender. |
| LoggerThread |
Logger thread is used to process async appenders. |
| LogMessage |
Logger message object. |
| ThrowableInfo |
Log message throwable information. |


Common commands
Published:
- General Shell Commands
- SSH Commands
- tmux commands
- Vim Commands
- Git Commands
- i3wm commands
- Brew bundle
General shell commands
| Commands | Description |
|---|---|
echo $SHELL |
Display name of active shell (bash or zsh or others) |
man command-name Eg: man bash | grep -C2 ‘$@’ |
Get information about the command Here, return 2 leading and trailing lines around the matching text ‘$@’ in the information |
command-name --help |
Information about the command usage |
pwd |
get current path |
| pwd | pbcopy | copy current path to clipboard (Use xcopy or xsel for linux) |
cd - |
go back to previous location |
take new_dir |
create new_dir and cd into it i.e. mkdir new_dir; cd new_dir |
ls -al |
List. a - all l - long listing format d means directory - means file |
ls -ls |
list files with detailed info (permission, date, symoblic links) |
| ls -1 | wc -l | count number of files in a directory |
cat filename |
show the contents of the file filename |
| tee Eg: df -h | tee usage.txt |
display stdout of a command and write it in a file |
free -h |
Show RAM - space used and free |
df -h |
Show disk information - space used and free |
du -sh . |
Show total size occupied by current directory |
du -sh * |
Show size of each file or folder in current directory |
| du -sh * | tail -1 | Show total size occupied by the last file in the current directory |
| ps ax[c] [| less] | List currently running programs. c - easier to read less - easier to navigate |
pidof process-name |
Get the process id of a running process. |
kill process-id |
Kill the process |
uname [-[s][a]] |
Display name of OS Distribution. a - Detailed info. |
stat filename |
Display file status |
alias alias-name |
Shows the alias actual command |
date +format E.g. date +%d/%m/%Y |
Date command |
cal [-3] [[month] year] E.g. cal -3 june 1996 or cal 1997 or cal |
Calendar command. -3 means show previous and the next month as well. |
less file.txt |
Show file contents (similar to cat but allows to move up and down) |
more file.txt |
Show file contents (similar to cat but allows to move up and down) |
rm -ir |
Remove. i - prompt to ask permission for each file. r - recursively delete |
grep [-i] text_to_search /path/to/file |
Search for contents in a file , i - case insensitive |
grep -v text_to_search /path/to/file |
Search for contents not matching the pattern in a file |
command > file.txt |
adds output of command to file.txt. Creates a new file if does not exist. If exists, overwrites the contents of the file. |
command >> file.txt |
adds output of command to file.txt. Creates a new file if does not exist. If exists, appends the outputs to the contents of the file. |
find / -name "file_name" [2>/dev/null] Eg: find \ -name "*backup*" 2/dev/null |
Find file from the root directory 2/dev/null: 2 takes error output and redirects to dev/null where it is deleted |
find . -not -name "file_name" |
Find files not matching the filename |
| find . -name “file_name” | xargs -I % rm % | Find and delete files matching the filename |
find . -name "file_name" -exec rm -i {} \; |
Find and delete files matching the filename |
find . -name "file_name" -exec grep "Hello" -i {} \; |
Find and search “Hello” in files matching the filename |
find -E . -regex ".*/file_name[0-9].sh" |
Find files matching the regular expression (this syntax works only in osx) |
find -E . -not -regex ".*/file_name[0-9].sh" |
Find files not matching the regular expression (this syntax works only in osx) |
| command | grep text_to_search Eg: find / -name “backup” 2>/dev/null | grep $USER |
Using pipe to combine grep with other commands |
awk |
very powerful command for pattern scanning and processing |
<C-T> |
fzf: fuzzy finding files or directories You need to install fzf |
<C-R> |
fzf: fuzzy finding commands in history |
<Esc-C> |
fzf: fuzzy finding files or directories from current path |
top or htop or ytop or gotop |
Process info and CPU Usage (You need to install htop or ytop) |
tree [-aldf][-L level][-P pattern][-I pattern][-o filename] |
display directory’s contents in a tree a - all files l - symbolic links d - directories only L - limit number of levels of directory I - files not matching pattern P - files matching pattern o - output to filename You need to install tree |
SSH Commands
SSH Tunnelling
To access servers hosted on the remote machine from the local machine
$ ssh -NL port1_server:localhost:port1_local [-NL port2_server:localhost:port2_local]{multiple ports possible} username@remote-ip-address
Example:
$ ssh -NL 8888:localhost:8888<EMAIL_ADDRESS>Copy multiple files from remote to local:
$ scp username@remote-ip:/some/remote/directory/\{file1,file2,file3\} /localpath
$ scp username@remote-ip:'/path1/file1 /path2/file2 /path3/file3' /localPath
Other ssh commands
Generate ssh key:
Using ed25519 (more secure: Recommended)
$ ssh-keygen -t ed25519
Using RSA
$ ssh-keygen -t rsa -b 3072
Save ssh host info
Modify this file: ~/.ssh/config
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa (path/to/key)
Host targaryen
HostName <IP_ADDRESS>
User daenerys
Port 7654
Host tyrell
HostName <IP_ADDRESS>
Host martell
HostName <IP_ADDRESS>
Host *ell
User oberyn
Host * !martell
LogLevel INFO
Host *
User root
Compression yes
Save ssh password so that no need to re-enter every time
Run this in client (not server)
ssh-copy-id -i path/to/key.pub username@server-ip-address
Example:
ssh-copy-id -i ~/.ssh/id_rsa.pub<EMAIL_ADDRESS>Open server in nautilus / file explorer in linux
File explorer: Other locations > Connect to server > sftp://username@ip/
tmux commands
| tmux | Create a tmux session with default window name 0 |
| tmux new -As name | Create a tmux session with a name or attach to an existing session (if it exists) |
| tmux ls | List the active tmux sessions |
| tmux a -t name | Attach to an existing tmux session |
| tmux kill-session- t name | Kill an existing tmux session |
<prefix> = <c-B> (default), can be changed to <c-A> |
|
<prefix> [%”] |
(Splitting panes) |
| [c-D] | (exit) |
<prefix> D |
(get out ) |
<prefix> c |
Create a new window (appears in status bar) |
<prefix> 0 |
Switch to window 0 |
<prefix> 1 |
Switch to window 1 |
<prefix> x |
Kill current window |
<prefix> d |
Detach tmux (exit back to normal terminal) |
<prefix> z |
the active pane is toggled between zoomed and unzoomed |
<prefix> space |
switch between split orientations |
<prefix> ! |
Break current pane to a new window |
<prefix> | Swap pane within a window |
|
<prefix> () |
Switch between tmux sessions |
<prefix> <C-o> |
Swap pane within a window |
<prefix> :move-window -t 2 |
rename current window to 2 if 2 does not exist |
<prefix> :resize-pane -D n |
Resizes the current pane down by n cells |
<prefix> :resize-pane -U n |
Resizes the current pane upward by n cells |
<prefix> :resize-pane -L n |
Resizes the current pane left by n cells |
<prefix> :resize-pane -R n |
Resizes the current pane right by n cells |
<prefix> :join-pane [-dhv] [-l size | -p percentage] [-s src-pane] [-t dst-pane] Eg: <prefix> :join-pane -v -s 4 -t :1 |
Join one pane to another |
<prefix> <c-S> |
save current state You need to install tmux-resurrect |
<prefix> <c-R> |
reload saved state |
Vim commands
I. Pure Vim
Syntax:
Verbs (operations) + Noun (text on which operation is performed)
[count] [operation] [text object / motion]
Run bash commands in vim
:[.]!command
. (dot)
- outputs the command into the current buffer
1. VIM Verbs (operations)
| c | change |
| d | delete |
| C | change everything from where your cursor is to the end of the line |
| D | delete everything from where your cursor is to the end of the line |
| dd | delete a line |
| x | delete a sigle character |
| y | yank text into the copy buffer. |
| yy or Y | yank line into the copy buffer. |
| v | highlight one character at a time. |
| V | highlight one line at a time. |
<c-v> |
highlight by columns. |
| p | paste text after the current line. |
| P | paste text on the current line. |
| > | Shift Right |
| < | Shift Left |
| = | Indent |
| gU | make uppercase |
| gu | make lowercase |
| ~ | swap case |
2. VIM Nouns (text)
i. Text Objects
Must be combined with verbs
| iw | inner word (non whitespace) (works from anywhere in a word) |
| aw | word with surrounding white space (works from anywhere in a word) aw ~ W. Difference in position. E.g. For dw, cursor must be at beginning, whereas daw works from any position. |
| ib | inner bracket (the contents of an HTML tag) |
| ab | a bracket |
| it | inner tag (the contents of an HTML tag) |
| at | a tag block |
| i” | inner quotes |
| a” | a quote |
| ip | inner paragraph |
| ap | a paragraph |
| is | inner sentence |
| as | a sentence |
Combination examples:
| gUiw | capitalize a word |
| ci( | change inner bracket |
| 6dW | delete 6 words |
| yis | copy inner sentence |
| di” | delete inner quotes |
ii. Motions
Can be combined with verbs or used independently
| [count] w/W | go a (word / word with whitespace) to right |
| [count] b/B | go a (word / word with whitespace) to left |
| [count] e/E | go to the end of (word / word with whitespace) |
| [count] ]m | go to the beginning of next method |
| [count] h / j / k / l | left / down / up / right |
| [count] f/F [char] [;,]+ | go to the next occurence of character |
| [count] t/T [char] [;,]+ | go to just before the next occurence of character |
| % | move to matching parenthesis pair |
| [count] + | down to first non blank char of the line. |
| [count]$ | moves the cursor to the end of the line. |
| 0 | moves the cursor to the beginning of the line. |
| G | move to the end of the file. |
| gg | move to the beginning of the file. |
| ]m or [m | Mode between methods. |
Combination examples:
| 3ce | Change 3 words to end |
| d]m | delete start of next method |
| ctL | change upto before the next occurence of L |
| d]m | delete start of next method |
3. Other important vim commands
| i | Insert to left of cursor |
| a | Insert to right of cursor |
| A | insert at end of line |
| I | insert at beginning of line |
| o | insert at beginning of next line |
| O | insert at beginning of previous line |
| u | undo |
<c-r> |
will redo the last undo. |
| /text | search for text |
| :%s/text/replacement text/g | search through the entire document for text and replace it with replacement text. |
| :%s/text/replacement text/gc | search through the entire document and confirm before replacing text. |
| * | search forward for word under cursor |
| # | search backward for word under cursor |
| :vsplit | vertical split windows |
| m[a-zA-Z] | sets a custom mark whose location can be accessed using `[mark] and line accessed using ‘[mark] |
| g; | goto last cursor position |
| ’. | move to the last edit |
| :marks | show all current marks that are being used |
| :w | write |
| :w file_name | write the changes to a new file |
| :q | quit |
| :q! or ZQ | force quit |
| :wq or ZZ | write and quit |
| :w !sudo tee % | Write with sudo permissions if permission not available |
| :bd | remove buffer |
| [:vert] :sf filename | find file and open in split mode |
<c-v> select multiple lines then I or A and type the required text |
insert text at multiple lines at the beginning or the end |
q <char > commands q [count] @ <char > |
record command macros apply recorded commands |
| :ab ipho International Physics Olympiad | Set abbreviation for long terms for easy typing Use <C-v> to prevent expansion |
norm command. Eg vip then :norm Ithis comes to the left |
Applies sequence of button presses / commands to each line selected Select a paragraph and add the text to the left of each line in the paragraph |
Global commands. Eg :g/^@/m$ |
Apply commands to lines matching particular pattern Move all lines starting with @ to the end of the document |
Timetravel Eg :earlier 10m :earlier 5h :later 2h |
Move to the file state in the past or future as specified |
4. Useful key remappings
jk (Custom- inoremap jk <Esc> ) |
<Esc> |
kj (Custom)inoremap kj <Esc> |
<Esc> |
nnoremap <C-c>| <Esc> |
|
nnoremap <C-s> |
:w<CR> |
nnoremap <C-Q> |
:wq!<CR> |
| Better window navigation | |
nnoremap <C-h> |
<C-w>h |
nnoremap <C-j> |
<C-w>j |
nnoremap <C-k> |
<C-w>k |
nnoremap <C-l> |
<C-w>l |
5. Using Args
Args are list of files initially opened. So, it’s a subset of buffers.
| :args | display args files |
| :args */.yaml | add files to args |
| :sall | open all args files in split mode |
| :vert sall | open all args files in vertical split mode |
| :windo difft | show differences in all args files |
| c-x, c-l | autocomplete |
| :vim TODO/ ## | search in all args files |
| :cdo s/TODO/DONE/g | replace in all args files |
6. Scrolling and motions
<c-u > , <c-d > |
Up, down scroll |
| { } | Up, down scroll between spaces |
<c-b > , <c-f > |
Up, down full screen scroll |
<c-y > , <c-e > |
Up, down scroll by lines |
| H / M / L | Navigations to top / middle / bottom |
| zt | Put current cursor position to top |
| zz | Put current cursor position to middle |
| zb | Put current cursor position to bottom |
II. Vim Plugins commands
Install any vim plugin manager like vim-plug.
To apply latest settings:
:source $MYVIMRC
Ranger
First, instll ranger
Mac
brew install ranger
Linux
sudo apt install ranger
Install ranger plugin for vim
" Ranger in vim
Plug 'francoiscabrol/ranger.vim'
" Dependency for ranger in neovim
Plug 'rbgrouleff/bclose.vim'
When ranger is open in vim or externally
cw |
Rename file/dir : change word |
A |
Rename file: add at the end of extension |
a |
Rename file: add just before the extension |
I |
Rename file/dir: add at the front of the filename/directory |
:bulkrename |
Rename a list of files/directories |
:mkdir newdir |
Create new directory |
Space |
Highlight/Select files / directories |
V |
Highlight/Select files / directories similar to visual mode |
uv |
Undo highlight/select |
yy |
Copy/yank file/dir |
dd |
Cut file/dir |
pp |
Paste file/dir. If file exists, new file created with _ at the end of the name |
po |
Paste but overwrite file/dir |
uy |
Undo Copy/yank |
dD |
Delete |
Z (Custom mapping) |
Compress using an external script mapped to ranger |
x (Custom mapping) |
Extract using an external script mapped to ranger |
1. vim-surround commands
Install Plug tpope/vim-surround
| ds[‘“bB{}t] | delete surrounding quotes |
| cs[‘“bB{}t] [‘“bB{}t] | change surrounding quotes |
| ysiw[‘“bB{}t] | add surrounding quotes “ |
| v-select, S[‘“bB{}t] | add surrounding |
Examples:
<p> Hello </p> |
cst<h2> |
<h2> Hello </h2> |
| if *x>3{ | ysW( | if ( x>3 ) { |
| *“hello” | ysWf print<cr(Enter)> | print(“hello”) |
2. Git plugins commands
Install these plugins first
" Show differences with style
Plug 'mhinz/vim-signify'
" Main GIT PLugin :Git
Plug 'tpope/vim-fugitive'
" Git Hub plugin, enables :Gbrowse
Plug 'tpope/vim-rhubarb'
" Git commit browser
Plug 'junegunn/gv.vim'
" Git commit history in each line
<c-o> <c-i> |
Toggle between buffers |
| :Git diff | Show git differences |
| :Gdiffsplit | Show differences in split mode |
| :GBrowse | Open the repository in github |
| :GV | Show git commit history |
3. Coc commands
Install COC plugin first
" Intellisense
Plug 'neoclide/coc.nvim', {'branch': 'release'}
| gd | Goto Definitions of variable under cursor |
| gr | Goto References of variable under cursor |
| :CocInstall tool_name E.g. :CocInstall coc-python | Installing coc tools |
| :CocUninstall tool_name | Uninstalling coc tools |
| :CocList extensions (Tab for autocompletion) | Show extensions |
| :CocCommand | execute a COC command |
| o | expand/collapse in Coc explorer (First run :CocInstall coc-explorer) |
4. coc-python
Install coc-python first
:CocInstall coc-python
| Shift K | doc hint |
| :Format | autopep8 formatting |
<C-w> w |
Switch cursors between sidebar and code |
<C-n> <C-n> <C-n> c I A |
multiple cursors: change Insert at first Insert at end |
5. FZF
Install fzf in system and fzf plugin
OSx
brew install fzf
# To install useful key bindings and fuzzy completion:
$(brew --prefix)/opt/fzf/install
brew install ripgrep
Linux
sudo apt install fzf
sudo apt install ripgrep
FZF Plugin
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'airblade/vim-rooter'
| :Rg | Find word inside file |
| :BLines | Find all occurrences of word in a giant file |
| :Lines | Same as above but search in all buffers |
| :History: | History of commands ran in vim |
| :Ag | similar to Rg but |
| :Buffers | Search through buffers |
| > | Tab |
| gf | Goto file: open file directly from path written in vim |
6. Startify
Install Startify Plugin for Project management
" Start Screen
Plug 'mhinz/vim-startify'
| :SSave | Save session |
| :SLoad | Load session |
7. vim-commentary
" Better Comments
Plug 'tpope/vim-commentary'
gc[<count>] <Text object> (Examples below) |
Comment out the target of a motion |
| gcap | Comment out a paragraph |
| gcw | Comment out the current line |
| gc2j | Comment out the current line and 2 lines below it |
Easy remapping
|nnoremap <leader>
/| :Commentary<CR>
|vnoremap <leader>
/| :Commentary<CR>
Git commands
| git commit –amend | add to previous commits |
| git commit -m $’Heading commit\n\nCommit description\nLine 2 of description’ | Commit and commit description in 1 line |
| git push origin -f branchname | forced push |
| git rebase master | merge changes of master onto the current branch (first pull from master before rebase) |
| git log | |
| git diff | |
| git remote -v | show repo information |
| git reset –hard |
|
| git show | |
| git config –global user.name | |
| git config –global user.email | |
| git reset |
remove file from the current index (the “about to be committed” list) without changing anything else. |
| git checkout filename | Undo local changes to latest commit |
| git stash | Stash local changes temporarily |
| git stash list | Show stashed branches |
| git stash show | Show the latest stashed file changes |
| git stash show -p N | Show the Nth (see number in git stash list) stashed file changes |
| git stash drop stash@{index} | Remove the given stash |
| git stash clear | Remove all stashes |
git stash list | awk -F: '{ print "\n\n\n\n"; print $0; print "\n\n"; system("git stash show -p " $1); }' |
Show the changes in the stash in detail |
Ignore files that have already been committed to the repo
$ git rm -r --cached .
$ git add .
$ git commit -m "Clean up ignored files"
Hard delete unpublished commits
git reset --hard commit_id (reset to the particular commit. It will destroy any local modifications.)
Alternatively, if there’s work to keep
git stash
git reset --hard commit_id
git stash pop
This saves the modifications, then reapplies that patch after resetting. You could get merge conflicts, if you’ve modified things which were changed since the commit you reset to.
Undo published commits with new commits
This will create three separate revert commits:
git revert a867b4af 25eee4ca 0766c053
It also takes ranges. This will revert the last two commits:
git revert HEAD~2..HEAD
Similarly, you can revert a range of commits using commit hashes:
git revert a867b4af..0766c053
Reverting a merge commit
git revert -m 1 <merge_commit_sha>
To get just one, you could use
rebase -i
to squash them afterwards Or, you could do it manually (be sure to do this at top level of the repo) get your index and work tree into the desired state, without changing HEAD:
git checkout 0d1d7fc32 .
Then commit. Be sure and write a good message describing what you just did
git commit
Git reset
git reset does know five “modes”: soft, mixed, hard, merge and keep. I will start with the first three, since these are the modes you’ll usually encounter. After that you’ll find a nice little a bonus, so stay tuned.
-
soft
When using
git reset --soft HEAD~1
you will remove the last commit from the current branch, but the file changes will stay in your working tree. Also the changes will stay on your index, so following with a git commit will create a commit with the exact same changes as the commit you “removed” before.
-
mixed
This is the default mode and quite similar to soft. When “removing” a commit with
git reset HEAD~1
you will still keep the changes in your working tree but not on the index; so if you want to “redo” the commit, you will have to add the changes (git add) before commiting.
-
hard
When using
git reset --hard HEAD~1
you will lose all uncommited changes in addition to the changes introduced in the last commit. The changes won’t stay in your working tree so doing a git status command will tell you that you don’t have any changes in your repository.
Tread carefully with this one. If you accidentally remove uncommited changes which were never tracked by git (speak: committed or at least added to the index), you have no way of getting them back using git.
-
Bonus (keep)
git reset --keep HEAD~1
is an interesting and useful one. It only resets the files which are different between the current HEAD and the given commit. It aborts the reset if anyone of these files has uncommited changes. It’s basically acts as a safer version of hard.
This mode is particularly useful when you have a bunch of changes and want to switch to a different branch without losing these changes - for example when you started to work on the wrong branch.
Remove sensitive file from github repo history
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch path_to_file" HEAD
git push -f origin master
Other git commands
git rm | rm plus git add combined
git rm --cached | file removed from the index (staging it for deletion on the next commit), but keep your copy in the local file system.
i3wm commands
- pavucontrol
- alsamixer
| mod + r - resize mode , then arrow keys or vim keys | |
| mod + Shift + e - exit | |
| mod + d - dmenu | |
| mod+Shift+c reload | |
| mod+Shift+r restart |
Alt+Shift- Change keyboard language
Brew bundle for OSx
Usage
Create a Brewfile
in the root of your project with:
touch Brewfile
Add your dependencies in your Brewfile
:
tap "homebrew/cask"
tap "user/tap-repo"<EMAIL_ADDRESS>cask_args appdir: "/Applications"
brew "imagemagick"
brew "denji/nginx/nginx-full", args: ["with-rmtp-module"]
brew<EMAIL_ADDRESS>restart_service: true, link: true, conflicts_with: ["mysql"]
cask "firefox", args: { appdir: "~/my-apps/Applications" }
cask "google-chrome"
cask "java" unless system "/usr/libexec/java_home --failfast"
mas "1Password", id: 443987910
whalebrew "whalebrew/wget"
cask
and mas
entries are automatically skipped on Linux.
Other entries can be run only on (or not on) Linux with if OS.mac?
or if OS.linux?
.
Install
You can then easily install all dependencies with:
brew bundle
Any previously-installed dependencies which have upgrades available will be upgraded.
brew bundle
will look for a Brewfile
in the current directory. Use --file
to specify a path to a different Brewfile
, or set the HOMEBREW_BUNDLE_FILE
environment variable; --file
takes precedence if both are provided.
My .Brewfile
is stored in the home directory and the HOMEBREW_BUNDLE_FILE
environment variable is set to ~/.Brewfile
You can skip the installation of dependencies by adding space-separated values to one or more of the following environment variables:
HOMEBREW_BUNDLE_BREW_SKIP
HOMEBREW_BUNDLE_CASK_SKIP
HOMEBREW_BUNDLE_MAS_SKIP
HOMEBREW_BUNDLE_WHALEBREW_SKIP
HOMEBREW_BUNDLE_TAP_SKIP
brew bundle
will output a Brewfile.lock.json
in the same directory as the Brewfile
if all dependencies are installed successfully. This contains dependency and system status information which can be useful in debugging brew bundle
failures and replicating a “last known good build” state.
You can opt-out of this behaviour by setting the HOMEBREW_BUNDLE_NO_LOCK
environment variable or passing the --no-lock
option.
You may wish to check this file into the same version control system as your Brewfile
(or ensure your version control system ignores it if you’d prefer to rely on debugging information from a local machine).
Dump
You can create a Brewfile
from all the existing Homebrew packages you have installed with:
brew bundle dump
The --force
option will allow an existing Brewfile
to be overwritten as well.
The --describe
option will output a description comment above each line.
The --no-restart
option will prevent restart_service
from being added to brew
lines with running services.
Cleanup
You can also use a Brewfile
to list the only packages that should be installed, removing any package not present or dependent. This workflow is useful for maintainers or testers who regularly install lots of formulae. To uninstall all Homebrew formulae not listed in the Brewfile
:
brew bundle cleanup
Unless the --force
option is passed, formulae that would be uninstalled will be listed rather than actually be uninstalled.
Check
You can check there’s anything to install/upgrade in the Brewfile
by running:
brew bundle check
This provides a successful exit code if everything is up-to-date, making it useful for scripting.
For a list of dependencies that are missing, pass --verbose
. This will also check all dependencies by not exiting on the first missing dependency category.
List
Outputs a list of all of the entries in the Brewfile.
brew bundle list
Pass one of --casks
, --taps
, --mas
, --whalebrew
or --brews
to limit output to that type. Defaults to --brews
. Pass --all
to see everything.
Note that the type of the package is not included in this output.
Exec
Runs an external command within Homebrew’s superenv build environment.
brew bundle exec -- bundle install
This sanitized build environment ignores unrequested dependencies, which makes sure that things you didn’t specify in your Brewfile
won’t get picked up by commands like bundle install
, npm install
, etc. It will also add compiler flags which will help find keg-only dependencies like openssl
, icu4c
, etc.
Restarting services
You can choose whether brew bundle
restarts a service every time it’s run, or
only when the formula is installed or upgraded in your Brewfile
:
# Always restart myservice
brew 'myservice', restart_service: true
# Only restart when installing or upgrading myservice
brew 'myservice', restart_service: :changed
Leave a Comment


Toggle navigation
SoundBoard
Home
About
Contact
SoundBoard running!
Knockout data binding:
Inactive
Click me
Font Awesome icons
are available


Serial rapist given life sentence for Coatbridge attacks during the 80s and 90s
Gerard Porteous left his victim "screeching" so loudly that a witness thought it was the noise of an animal.
by Andrew BarghA sick individual who repeatedly raped a woman in Coatbridge over a six-year-period has been given a life sentence behind bars.
Serial rapist Gerard Porteous' victim in this instance came forward to report the assaults three-years-ago after she saw a news report about him being jailed for 12 years for other attacks.
He was convicted after a trial at Glasgow's High Court last year, at which jurors heard how he regularly abused the woman in his home between 1987 and 1993.
A witness in the case revealed she previously heard the victim "screeching" to such an extent she assumed it was the noise of an animal.
The woman came forward after reading that he had been imprisoned for raping and abusing a number of women between 1994 and 2013.
He also attacked another woman at the Coatbridge property after trying to visit the victim, who had previously tried to escape from depraved Porteous.
He sexually assaulted her while they were alone in the house.
Click here for more from Airdrie and Coatbridge
After the victim recalled feeling "numb" as well as "terrified", prosecutor Steven Borthwick jurors: "Porteous did not say a word. He instead grabbed her and pushed her face against a wall.

Porteous insisted any intercourse with the initial woman was consensual and that nothing happened with the other victim.
Lord Mulholland told Porteous he will be in prison for a minimum of six years.
He added: "You have been convicted of serious crimes of violence and rape.
"This involved two victims and you subjected them to horrific ordeals.
"This [six-year sentence] is the minimum period and should not be thought as reflecting my view of when you should be released."


Contact Us
Want to say hello? Want to know more about us? Give us a call or drop us an email and
we will
get back to you as soon as we can.
Write to us:
Our Support Team Will Contact You as Soon as You Send this Query to Us. We don't have any Time Restrictions. We Look Forward to Your Mail. Have a Nice Day!
Inspired Memories (HQ)
-
#158, Spirit of Sweetness,
Koratagere,
Tumkur, Karnataka - 572129,
India - +91<PHONE_NUMBER>
-<EMAIL_ADDRESS>Hyderabad Office
-
#8, SKD Nagar,
Hari Hara Puram, B N Reddy Nagar,
Hyderabad,
Telangana - 500070,
India - +91<PHONE_NUMBER>
- support@inspiredmemories.in


Two weeks ago I wrote about Parallel Similarity Transformation, which is useful iterative method for finding maximum eigen value of positive square matrices, along with respective eigen vector such that following equality is satisfied. I used SYCL DPC++ for implementing kernels, but in last weeks I discovered ways to improve upon my previous work. So today I decided to write about how I optimize similarity transformation kernels and present you with updated benchmark results.
I'll just pick each kernel required for computing maximum eigen value of positive square matrix and figure out ways how it can be improved in step-by-step manner. Following five kernels are required for performing parallel similarity transformation.
I'll start with first one. All this kernel should do is simply compute sum of values stored in cells along each row of matrix. AN x N being a square matrix, it needs to output to a N-element vector where ith cell should hold sum of ith row of matrix. I want to perform N-many parallel summations --- as simple as that. With this requirement in mind, I'll write following kernel.
A high-level look at this kernel reveals it's not good idea to atomically compute sum of all elements along each row of AN x N. N-many memory locations of result vector of length N, are being operated on atomically to avoid any chance of data race. Each cell of result vector of length N, will be accessed N-many times by N-many designated work-items. This results into N2 global memory access, which is expensive. I'd like to reduce global memory access as much as possible. One simple way to do this in current context is to make use of reduction function of SYCL DPC++, which will help me in computing sum of all elements held by all work-items of subgroup. Using this subgroup method maps well to underlying SIMD instructions, which reduces communication cost, but does compute sum of all values held by subgroup participants. Finally I'll use atomic write to update sum in designated row of result vector, living in global memory, helping me to reduce global memory access to N2 / B, given that B = subgroup width. I'll express this with following kernel.
This kernel is indeed better than previous matrix row sum kernel, where N2 global memory accesses were performed. But I see one more way to attempt further optimization. I want to make use of faster local memory so that subgroup leader can atomically update respective work-group's sum, stored in designated local memory. It's possible to have multiple subgroups in a work-group, that way I'm able to reduce global memory access by another factor. Now only subgroup leaders are accessing local memory to update respective work-group's row sum, with their own subgroup level row sum. Finally after all work-items of this work-group are done, only work-group leader will access designated cell of global memory to atomically update respective row sum. With this update kernel should only access global memory N2 / B times, when B = work-group size, which should preferrably be greater than subgroup size. My final update to matrix row sum kernel looks like below.
Now it's good time to run these three kernels on both CPU and GPU, with various matrix dimension, to see how they perform. Following section shows result of running three variants of row sum kernel on CPU.
I see for random square matrix of dimension N x N, second variant of row summation kernel performs best. I expected third variant to perform at least as same as second one, if not better, though it seems second one is ~2x faster compared to last kernel. I compiled these kernels Ahead of Time, so that runtime kernel compilation time can be saved and launch on accelerator will be faster. As I've access to GPU, I've also ran it there and following are benchmark results I obtained.
Naive implementation i.e. first variant is performing much poor on GPU, but that's what I expected as all work-items are attempting to update global memory atomically, congestion should be high. I see this time third variant shines ! As I understand, in GPU it has dedicated local memory, which provides faster access compared to global memory. That's why third variant, where I make use of local memory to reduce global memory access and only work-group leaders access global memory one time to atomically update total row sum, performs better than others --- almost 2x faster than second variant, its closest competitor.
Now I'd like to spend some time in explaining how I'd attempt to write second kernel i.e. kernelMaxInVector. Business logic of this kernel should just find out maximum value from a given vector of size N. A naive way that comes to my mind first, is using atomic maximum value finder, where each work-item ( respresenting each cell of vector ) attempts to atomically compare its holding with some known global memory location, where finally maximum value is supposed to be stored. As my interest is finding out maximum value of vector, I'll have to initialize result memory location with 0. I'll write following kernel, depicting my naive attempt.
A next step that comes to my mind, for improving max value in vector finder kernel, is using SYCL DPC++ reduction kernel
for finding maximum value among all work-items of certain subgroup. This results in better mapping to underlying SIMD instructions.
Finally only subgroup leader will attempt to compare subgroup's maximum value with result in global memory location, which naturally
results into reduced access of global memory. In previous kernel, all work-items would have to compare their holding
with target in global memory, which results into N-many global memory accesses. But with this improvement, global memory access should
be reduced to N / B, when N = vector size, B = subgroup size.
Following is my attempt in writing this improved variant of kernelMaxInVector.
As I understand, second variant of max in vector kernel should perform better than first variant, but I've another idea
which I'd like to implement and benchmark. In quest of finding a way in reducing global memory access as much as possible,
I bring in idea of using local memory, where all subgroups of certain work-group help in computing maximum value of work-group
itself. And finally when all work-items of that work-group are done ( read reaches a synchronization point ), only work-group leader will attempt to access
global memory and perform atomic comparison to decide whether updation to result can be performed or not. This kernel
should reduce global memory access to N / B, when N = vector size, B = work-group size. Note, this technique will only
prove fruitful if work-group size is larger than subgroup size, specifally I'll set work-group such that it's evenly
divisible by subgroup size, which I'll specify using attribute understandable by dpcpp compiler.
Following is the attribute required for setting subgroup size for some kernel.
My final attempt in improving vector max value finder kernel is as below.
This is a time to benchmark three implementations for finding maximum value in vector. AOT compiled kernels on CPU perform as below.
I notice first variant, where all work-items are atomically comparing self value with global memory's
target value, doesn't perform that bad on CPU. It may be due to that CPU has better atomic operation support.
The final variant, which I expected to do better, is probably sufferring from the fact that on CPU, there's no
explicit local memory. Making subgroup leaders to write to local memory first, for finding work-group local maximum value
and then only work-group leader contributing in finding maximum value of vector by accessing/ comparing global memory ---
is incurring more cost than benefit, on CPU.
In below table, I present you with benchmark results I obtain after running same kernels on GPU. As GPU is less capable
in executing atomic operations, compared to CPU, I see first variant performing much worse on GPU. In second variant, subgroup's
work-items find maximum value using SYCL DPC++ reduction function, which is performing lot better as I expected. In this case,
contention should also be lower, as only subgroup leaders are supposed to be atomically accessing global memory. The final
variant, where I introduced local memory, so that I can reduce scope of global memory access by another factor, letting only
workgroup leaders atomically access global memory, performs almost as same as second variant. May be third technique doesn't bring
much on table, but it's another sound & efficient way to write this kernel.
Next kernel in my list, kernelComputeEigenVector, is very simple to implement, where each element of result vector is computed using following formula.
This problem itself is very parallel, no data dependency, so I'll write following kernel for parallelly computing result eigen vector from row sum vector and max value in row sum vector.
Notice, value stored in max_val memory location is in global memory, which is accessed N-many times during execution of this kernel. But this value is somewhat constant in this context, so I'd like to use some technique which will help me in reading this value from global memory only once. After that read value will be distributed among a set of work-items, not requiring each of them to read from global memory. This will result into reduced global memory access, which contributes in making whole compute pipeline faster. The set of work-items which will read from global memory only once, is called subgroup. As subgroups map well to underlying SIMD intrinsics, resulting code running on accelerator should perform better. My take at modifying this kernel is as simple as adding group_broadcast method when reading from memory location held behind max_val.
Benchmarking last two kernels, used for computing eigen vector, on CPU gives me following result. It looks both kernel variants perform almost same on CPU and my speculation of resulting into better SIMD usage in case of second variant of kernel, doesn't seem to be true.
Benchmarking on GPU, I see similar trend that both variants are performing almost same. I believe this is due to either I'm using group_broadcast improperly or it's not working as expected.
Next kernel I'll write is kernelSimilarityTransform, which is an important part in compute pipeline of whole Similarity Transformation method. This kernel itself helps in computing next iteration's matrix using following technique. I've already found row sum vector of a matrix, which I'll use in this kernel. Assume I've one vector of length N, forming one diagonal matrix and its respective inverse matrix is trivial.
Next iteration's matrix is computed as below.
This is a matrix multiplication problem, but two of three operands being diagonal matrices and two matrices being inverse of one another, I can reduce matrix multiplication problem to a reduced variant, as I derive it in above diagram. Writing a parallel implementation of this is pretty easy.
This kernel makes use of local memory to cache diagonal matrix's ( read row-sum vector ) cells, reducing global memory access. Benchmarking this kernel on CPU, GPU compares as below. As GPUs possess explicit local memory, benefits of using local memory is clearly visible on second column in following diagram.
Final kernel in pipeline i.e. kernelStopCriteria, examines row-sum vector and decides whether we should go to next iteration or not. When iterative method converges to result, all values in row-sum vector should be very close and absolute difference between a pair of consequtive values should be lesser than some predefined epsilon value --- error in floating point computation that I'm okay to live with. Let us take an example vector to demonstrate how I can write one parallel kernel for same.
For a vector of length N, I'll kick off N work-items where ith work-item accesses row-sum vector's ith and (i+1)th indices, for finding absolute difference between a pair of consequtive cells. Notice for work-item with index N-1, attempting to access global memory with index (i+1) = N should result into segmentation fault. I should be accessing index i and (i+1) % N of row-sum vector from each work-item. Implementing such a kernel is as easy as below.
This kernel is pretty simple, except all_of function, which is a SYCL group algorithm function, helps in evaluation of a boolean
predicate across all work-items of a work(/ sub)-group. The main problem I see with above kernel is duplicate access of global memory ( i.e. row-sum vector ).
Each cell of row-sum vector is accessed twice. For reducing global memory access, I've to resort to subgroup shuffling algorithm, so that within a subgroup
all work-items just read once from global memory, but then communicate among themselves, sharing their register cached values with other work-items in same
subgroup. I use one specific subgroup function --- shuffle_down, which helps me in obtaining ((i + 1) % B)th work-item's value
inside ith work-item, without explicitly accessing global memory. For sake of better demonstration purpose, let me take an example.
Say I've following vector, which I want to shuffle down, then assertion in following pseudocode block must hold.
Pictorially it looks like below, when subgroup size is 4. If each of 4 work-items start with their initial value in first row, after shuffle_down by 1 place, their local register content should be updated to last row. This is somewhat similar to what I want to attain. I say somewhat because, this model doesn't fully fit my requirement when vector size N itself is greater than subgroup size, say B.
Check following scenario, where subgroup size is 4, but vector which is being shuffled down is of length 8. As shuffle_down method itself wraps around at subgroup boundary, produced result will look like below. But my expected result is something where index wrapping should happen at boundary of whole vector under operation.
As subgroup shuffling itself is not enough to satisfy requirement for checking stopping criteria, in parallel, I use conditional check based reading from global memory, though this results into duplicate reads from global memory at subgroup boundary. Then rest of the flow is same.
I can introduce local memory here, following same rationale as I did in some of previous kernels. Instead of letting all subgroup leaders atomically accessing global memory for updating status of whether convergence criteria has been satisfied in respective subgroup, I can just let work-group leaders do that part. In this updated setup, subgroup leaders update flag in local memory, where it's decided whether convergence criteria has been reached in work-group. And when all work-items of work-group reach one barrier ( synchronization point ), work-group leader will update work-group's result in global memory. Comparing benchmark of final variant of convergence criteria checker kernel shows much better performance on GPU.
Empowered with all these (optimized) kernels, it's time to present whole compute pipeline with inter-kernel dependency. I use SYCL buffers for representing/ passing around data, which helps SYCL runtime to figure out computational dependency graph in terms of DAG.
Now I'd like to present final benchmark of whole compute pipeline of Parallel Similarity Transformation, depicting performance on both CPU, GPU. I run benchmark suite with N x N hilbert matrix, finding maximum eigen value and respective eigen vector. Last column in following table shows how many iterations were required before converging to maximum eigen value. For matrices of large dimension performance on GPU is better, because all component kernels perform better on GPU, making whole compute pipeline faster.
I keep parallel similarity transform method's full implementation here for future reference. In this post, I attempted to show how I'd go about writing parallel kernels and eventually optimize them. Major points I try to focus during optimization phase.
If you find out some mistake/ possible (yet undiscovered) way to improve some kernel, consider dropping me a line with that.
Have a great time !


Symbollic Logic
by Lewis Carroll
“Book 2: Chapter 3”
Additional Information
- Year Published: 1896
- Language: English
- Country of Origin: United States of America
- Source: Carroll, L. (1896). Symbollic Logic. New York; Macmillan & Co.
-
Readability:
- Flesch–Kincaid Level: 10.5
- Word Count: 2,835
- Genre: Informational
- Keywords: math history, mathematics
- ✎ Cite This
Downloads
CHAPTER III.
PROPOSITIONS OF RELATION.
Section 1. Introductory.
A Proposition of Relation, of the kind to be here discussed has, for its Terms, two Specieses of the same Genus, such that each of the two Names conveys the idea of some Attribute not conveyed by the other.
[Thus, the Proposition “Some merchants are misers” is of the right kind, since “merchants” and “misers” are Specieses of the same Genus “men”; and since the Name “merchants” conveys the idea of the Attribute “mercantile”, and the name “misers” the idea of the Attribute “miserly”. each of which ideas is not conveyed by the other Name. But the Proposition “Some dogs are setters” is not of the right kind, since, although it is true that “dogs” and “setters” are Specieses of the same Genus “animals”, it is not true that the Name “dogs” conveys the idea of any Attribute not conveyed by the Name “setters”. Such Pro- positions will be discussed in Part II.]
The Genus, of which the two Terms are Species, is called the ‘Universe of Discourse,’ or (more briefly) the Univ.’
The Sign of Quantity is “Some” or “No” or “All”.
[Note that, though its Sign of Quantity tells us how many Members of its Subject are also Members of its Predicate, it does not tell us the exact number: in fact, it only deals with three numbers, which are, in ascending order, “0”, “1 or more”, “the total number of Members of the Subject”.]
It is called “a Proposition of Relation” because its effect is to assert that a certain relationship exists between its Terms.
Section 2. Reduction of a Proposition of Relation to Normal form.
The Rules, for doing this, are as follows:–
(1) Ascertain what is the Subject (i.e., ascertain what Class we are talking about);
(2) If the verb, governed by the Subject, is not the verb “are” (or “is”), substitute for it a phrase beginning with “are” (or “is”);
(3) Ascertain what is the Predicate (i.e., ascertain what Class it is, which is asserted to contain some, or none, or all, of the Members of the Subject);
(4) If the Name of each Term is completely expressed (i.e. if it contains a Substantive), there is no need to determine the ‘Univ.’; but, if either Name is incompletely expressed, and contains Attributes only, it is then necessary to determine a ‘Univ.’, in order to insert its Name as the Substantive
(5) Ascertain the Sign of Quantity;
(6) Arrange in the following order:– Sign of Quantity, Subject, Copula, Predicate.
[Let us work a few Examples, to illustrate these Rules.
(1) “Some apples are not ripe.”
(1) The Subject is “apples.”
(2) The Verb is “are.”
(3) The Predicate is “not-ripe * * .” (As no Sub- stantive is expressed, and we have not yet settled what the Univ. is to be, we are forced to leave a blank.)
(4) Let Univ. be “fruit.”
(5) The Sign of Quantity is “some.”
(6) The Proposition now becomes “Some | apples | are | not-ripe fruit.”
(2) “None of my speculations have brought me as much as 5 per cent.”
(1) The Subject is “my speculations.”
(2) The Verb is “have brought,” for which we substitute the phrase “are * * * that have brought”.
(3) The Predicate is ” * * * that have brought &c.”
(4) Let Univ. be “transactions.”
(5) The Sign of Quantity is “none of.”
(6) The Proposition now becomes “None of | my speculations | are | transactions that have brought me as much as 5 per cent.”
(3) “None but the brave deserve the fair.” To begin with, we note that the phrase ‘none buit the brave” is equivalent to “no not-brave.”
(1) The Subject has for its Attribute “not-brave.” But no Substantive is supplied. So we express the Subject as “not-brave * * * .”
(2) The Verb is “deserve,” for which we substitute the phrase “are deserving of”.
(3) The Predicate is ” * * * deserving of the fair.”
(4) Let Univ. be “persons.”
(5) The Sign of Quantity is “no.”
(6) The Proposition now becomes “No | not-brave persons | are | persons deserving of the fair.”
(4) “A lame puppy would not say “thank you” if you offered to lend it a skipping-rope.”
(1) The Subject is evidently “lame puppies,” and all the rest of the sentence must somehow be packed into the Predicate.
(2) The Verb is “would not say,” &c., for which we may substitute the phrase “are not grateful for.”
(3) The Predicate may be expressed as ” * * * not grateful for the loan of a skipping-rope.”
(4) Let Univ. be “puppies.”
(5) The Sign of Quantity is “all.”
(6) The Proposition now becomes “All | lame puppies | are | puppies not grateful for the loan of a skipping-rope.”
(5) “No one take in the Times, unless he is well-educated.”
(1) The Subject is evidently persons who are not well-
educated (“no one” evidently means “no person”). (2) The Verb is “take in,” for which we may substitute the phrase “are persons taking in.”
(3) The Predicate is “persons taking in the Times.”
(4) Let Univ. be “persons.”
(5) The Sign of Quantity is “no.”
(6) The Proposition now becomes “No | persons who are not well-educated | are | person taking in the Times.”
(6) “My carriage will meet you at the station.”
(1) The Subject is “my carriage.” This, being an ‘In- dividual,’ is equivalent to the Class “my carriages.” (Note that this Class contains only one Member.)
(2) The Verb is “will meet”, for which we may substitute the phrase “are * * * that will meet.”
(3) The Predicate is “ * * that will meet you at the station.”
(4) Let Univ. be “things.”
(5) The Sign of Quantity is “all.”
(6) The Proposition now becomes “All | my carriages | are | things that will meet you at the station.”
(7) “Happy is the man who does not know what ‘toothache’ means!”
(1) The Subject is evidently “the man &c.” (Note that in this sentence, the Predicate comes first.) At first sight, the Subject seems to be an ‘Individual’; but on further consideration, we see that the article “the” does not imply that there is only one such man. Hence the phrase “the man who” is equivalent to ” all men who”.
(2) The Verb is “are.”
(3) The Predicate is “happy * * * .”
(4) Let Univ. be “men.”
(5) The Sign of Quantity is “all.”
(6) The Proposition now becomes “All | men who do not know what ‘toothache’ means | are | happy men.”]
(8) “Some farmers always grumble at the weather, whatever it may be.”
(1) The Subject is “farmers.”
(2) The Verb is “grumble,” for which we substitute the phrase “are * * * who grumble.”
(3) The Predicate is ” * * * who always grumble &c.
(4) Let Univ. be “persons.”
(5) The Sign of Quantity is “some.”
(6) The Proposition now becomes “Some | farmers | are | persons who always grumble at the weather, whatever it may be.”
(9) “No lambs are accustomed to smoke cigars.”
(1) The Subject is “lambs.”
(2) The Verb is “are.”
(3) The Predicate is ” * * * accustomed &c.”
(4) Let Univ. be “animals.”
(5) The Sign of Quantity is “no.”
(6) The Proposition now becomes “No | lambs | are | animals accustomed to smoke cigars.”
(10) “I ca’n’t understand examples that are not arranged in regular order, like those I am used to.”
(1) The Subject is “examples that,” &c.
(2) The Verb is “I ca’n’t understand,” which we must alter, so as to have “examples,” instead of “I,” as the nominative case. It may be expressed as “are not under- stood by me.”
(3) The Predicate is ” * * * not understood by me.”
(4) Let Univ. be “examples.”
(5) The Sign of Quantity is “all.”
(6) The Proposition now becomes “All | examples that are not arranged in regular order like those I am used to | are | examples not understood by me.”
Section 3. A Proposition of Relation, beginning with “All”, is a Double Proposition.
A Proposition of Relation, beginning with “All”, asserts (as we already know) that “All Members of the Subject are Members of the Predicate”. This evidently contains, as a part of what it tells us, the smaller Proposition “Some Mem- bers of the Subject are Members of the Predicate”.
[Thus, the Proposition “All bankers are rich men” evidently contains the smaller Proposition “Some bankers are rich men”.]
The question now arises “What is the rest of the information which this Proposition gives us?”
In order to answer this question, let us begin with the smaller Proposition, “Some Members of the Subject are Members of the Predicate,” and suppose that this is all we have been told; and let us proceed to inquire what else we need to be told, in order to know that “All Members of the Subject are Members of the Predicate”.
[Thus, we may suppose that the Proposition “Some bankers are rich men” is all the information we posses; and we may proceed to inquire what other Proposition needs to be added to it, in order to make up the entire Proposition “All bankers are rich men”.]
Let us also suppose that the ‘Univ.’ (i.e. the Genus, of which both the Subject and the Predicate are Specieses) has been divided (by the Process of Dichotomy) into two smaller Classes, viz.
(1) the Predicate; (2) the Class whose Differentia is contradictory to that of the Predicate.
[Thus, we may suppose that the Genus “men,” (of which both “bankers” and “rich men” are Specieses) has been divided into the two smaller Classes, “rich men”, “poor men”.]
Now we know that every Member of the Subject is (as shown at p. 6) a Member of the Univ. Hence every Mem- ber of the Subject is either in Class (1) or else in Class (2).
[Thus, we know that every banker is a Member of the Genus “men”. Hence, every banker is either in the Class “rich men”, or else in the Class “poor men”.]
Also we have been told that, in the case we are discussing, some Members of the Subject are in Class (1). What else do we need to be told, in order to know that all of them are there? Evidently we need to be told that none of them are in Class (2); i.e. that none of them are Members of the Class whose Differentia is contradictory to that of the Predicate.
[Thus, we may suppose we have been told that some bankers are in the Class “rich men”. What else do we need to be told, in order to know that all of them are there? Evidently we need to be told that none of them are in the Class “poor men”.]
Hence a Proposition of Relation, beginning with “All”, is a Double Proposition, and is ‘equivalent’ to (i.e. gives the same information as) the two Propositions
(1) “Some Members of the Subject are Members of the Predicate”; (2) “No Members of the Subject are Members of the Class whose Differentia is contradictory to that of the Predicate”.
[Thus, the Proposition “All bankers are rich men” is Double Proposition, and is equivalent to the two Propositions (1) “Some bankers are rich men”; (2) “No bankers are poor men”.]
Section 4. What is implied, in a Proposition of Relation, as to the Reality of its Terms?

A Proposition of Relation, beginning with “Some”, is henceforward to be understood as asserting that there are some existing Things, which, being Members of the Subject, are also Members of the Predicate; i.e. that some existing Things are Members of both Terms at once. Hence it is to be understood as implying that each Term, taken by itself, is Real.
[Thus, the Proposition “Some rich men are invalids” is to be understood as asserting that some existing Things are “rich invalids”. Hence it implies that each of the two Classes, “rich men” and “invalids”, taken by itself, is Real.]
A Proposition of Relation, beginning with “No”, is henceforward to be understood as asserting that there are no existing Things which, being Members of the Subject, are also Members of the Predicate; i.e. that no existing Things are Members of both Terms at once. But this implies nothing as to the Reality of either Term taken by itself.
[Thus, the Proposition “No mermaids are milliners” is to be understood as asserting that no existing Things are “mer- maid-milliners”. But this implies nothing as to the Reality, or the Unreality, of either of the two Classes, “mermaids” and “milliners”, taken by itself. In this case as it happerns, the Subject is Imaginary, and the Predicate Real.]
A Proposition of Relation, beginning with “All”, contains (see Section 3) a similar Proposition beginning with “Some” Hence it is to be understood as implying that each Term, taken by itself, is Real.
[Thus, the Proposition “All hyænas are savage animals” contains the Proposition “Some hyænas are savage animals”. Hence it implies that each of the two Classes, “hyæna” and “savage animals”, taken by itself, is Real.]
Section 5. Translation of a Proposition of Relation into or more Propositions of Existence.
We have seen that a Proposition of Relation, beginning with “Some,” asserts that some existing Things, being Members of its Subject, are also Members of its Predicate. Hence, it asserts that some existing Things are Members of both; i.e. it asserts that some existing Things are Members of the Class of Things which have all the Attributes of the Subject and the Predicate.
Hence, to translate it into a Proposition of Existence, we take “existing Things” as the new Subject, and Things, which have all the Attributes of the Subject and the Predicate, as the new Predicate.
Similarly for a Proposition of Relation beginning with “No”.
A Proposition of Relation, beginning with “All”, is (as shown in Section3) equivalent to two Proposition, one beginning with “Some” and the other with “No”, each of which we now know how to translate.
[Let us work a few Examples, to illustrate these Rules.
(1) “Some apples are not ripe.”  Sign of Quantity. “existing Things” . . . . . .   Predicate. or thus:– “Some | existing Things | are | not-ripe apples.”
(2) Some farmers always grumble at the weather, what- ever it may be.” Here we arrange thus:– “Some | existing Things | are | farmers who always grumbe at the weather, whatever it may be.”
(3) “No lambs are accustomed to smoke cigars.” Here we arrange thus:– “No | existing Things |are | lambs accustomed to smoke cigars.”
(4) “None of my speculations have brought me as much as 5 per cent.” Here we arrange thus:– “No | existing Things | are | speculations of mine, which have brought me as much as 5 per cent.”
(5) “None but the brave deserve the fair.” Here we not, to begin with, that the phrase “none but the brave” is equivalent to “no not-brave men.” We then arrange thus:– “No | existing Things | are | not-brave men deserving of the fair.”
(6) “All bankers are rich men.” This is equivalent to the two Propositions “Some bankers are rich men” and “No bankers are poor men.” Here we arrange thus:– “Some | existing Things | are | rich bankers”; and No | existing Things | are | poor bankers.”


bool trigger_error ( string $error_msg [, int $error_type = E_USER_NOTICE ] )
Used to trigger a user error condition, it can be used by in conjunction with the built-in error handler, or with a user defined function that has been set as the new error handler (set_error_handler()). This function is useful when you need to generate a particular response to an exception at runtime.
This function returns FALSE if wrong error_type is specified, TRUE otherwise.


CrimPapers
Articles published on 11 July 2020
On 11 July 2020, 5 new articles were published in 5 journals.
A Comparative Analysis of Foiled and Completed Mass Shootings
Reflections Beyond the Shadow by Kelly Welch
What Staff Need to Know: Using Elements of Gender-Responsive Programming to Create Safer Environments For System-Involved Lgbtq Girls and Women by Lindsay L. Kahle, Jill Rosenbaum
Reducing Overdose After Release From Incarceration (roar): Study Protocol For An Intervention to Reduce Risk of Fatal and Non-Fatal Opioid Overdose Among Women After Release From Prison by Elizabeth Needham Waddell, Robin Baker, Daniel M. Hartung, Christi J. Hildebran, Thuan Nguyen, Deza’rae M. Collins, Jessica E. Larsen and Erin Stack
Transferring Alternatives to Pre-Trial Detention in the European Union Context. Can European Agreements Be Trusted? by Esther Montero Perez de Tudela


Changes from ADL SCORM 2004 RELOAD Editor Version 1.0
to ADL SCORM 2004 RELOAD Editor Version 1.1
|
-
RELOAD integrates this new functionality:
- SCORM 2004 4th Edition Sample Run-Time Environment (SRTE) Version 1.1.1:
if the SRTE is installed on a user's machine, a RELOAD package can be
automatically imported using the RTE Package View menu option.
- SCORM Learner Assessment Generator (SLAG): the user can add a SLAG exam by
right clicking the resources node and by choosing "Add Quiz".
- Healthcare LOM metadata support
-
RELOAD includes these enhancements:
- Human readable manifest
- Forced ".zip" file extension when zipping a content package
- Support additional character encodings
|
Changes from RELOAD Version 1.3.2
to ADL SCORM 2004 RELOAD Editor Version 1.0
|
-
RELOAD includes these updates based on the SCORM 2004 4th Edition release:
- Changes top level metadata <schemaversion> value to "2004 4th Edition"
- Updated <adlcp:completionThreshold> element
- Included ability to add the <adlcp:completionThreshold> element
under the <organization> element
- Added the <adlcp:sharedDataGlobalToSystem> attribute to the <organization> element
- Added the <adlcp:data> and <adlseq:objectives> elements
- Added the <adlnav:hideLMSUI> element to the sequencing and navigation wizard
- Added manifest validation for SCORM 2004 4th Edition packages
- Updated ADL, IMS and IEEE schemas
-
ADL Registry Metadata support includes:
- A new form with ADL Registry metadata mandatory fields
- ADL Registry Metadata validation
- LOM schemas with the ADL Registry extension vocabularies
|
| |


Class SpeechSettings (2.0.0)
public class SpeechSettings extends ClientSettings<SpeechSettings>
Settings class to configure an instance of SpeechClient.
The default instance has everything set to sensible defaults:
- The default service address (speech.googleapis.com) and default port (443) are used.
- Credentials are acquired automatically through Application Default Credentials.
- Retries are configured for idempotent methods but not for non-idempotent methods.
The builder of this class is recursive, so contained classes are themselves builders. When build() is called, the tree of builders is called to create the complete settings object.
For example, to set the total timeout of recognize to 30 seconds:
SpeechSettings.Builder speechSettingsBuilder = SpeechSettings.newBuilder();
speechSettingsBuilder
.recognizeSettings()
.setRetrySettings(
speechSettingsBuilder
.recognizeSettings()
.getRetrySettings()
.toBuilder()
.setTotalTimeout(Duration.ofSeconds(30))
.build());
SpeechSettings speechSettings = speechSettingsBuilder.build();
Static Methods
create(SpeechStubSettings stub)
public static final SpeechSettings create(SpeechStubSettings stub)
| Name | Description |
| stub | SpeechStubSettings |
| Type | Description |
| SpeechSettings |
| Type | Description |
| IOException |
defaultApiClientHeaderProviderBuilder()
public static ApiClientHeaderProvider.Builder defaultApiClientHeaderProviderBuilder()
| Type | Description |
| Builder |
defaultCredentialsProviderBuilder()
public static GoogleCredentialsProvider.Builder defaultCredentialsProviderBuilder()
Returns a builder for the default credentials for this service.
| Type | Description |
| Builder |
defaultExecutorProviderBuilder()
public static InstantiatingExecutorProvider.Builder defaultExecutorProviderBuilder()
Returns a builder for the default ExecutorProvider for this service.
| Type | Description |
| Builder |
defaultGrpcTransportProviderBuilder()
public static InstantiatingGrpcChannelProvider.Builder defaultGrpcTransportProviderBuilder()
Returns a builder for the default ChannelProvider for this service.
| Type | Description |
| Builder |
defaultTransportChannelProvider()
public static TransportChannelProvider defaultTransportChannelProvider()
| Type | Description |
| TransportChannelProvider |
getDefaultEndpoint()
public static String getDefaultEndpoint()
Returns the default service endpoint.
| Type | Description |
| String |
getDefaultServiceScopes()
public static List<String> getDefaultServiceScopes()
Returns the default service scopes.
| Type | Description |
| List<String> |
newBuilder()
public static SpeechSettings.Builder newBuilder()
Returns a new builder for this class.
| Type | Description |
| SpeechSettings.Builder |
newBuilder(ClientContext clientContext)
public static SpeechSettings.Builder newBuilder(ClientContext clientContext)
Returns a new builder for this class.
| Name | Description |
| clientContext | ClientContext |
| Type | Description |
| SpeechSettings.Builder |
Constructors
SpeechSettings(SpeechSettings.Builder settingsBuilder)
protected SpeechSettings(SpeechSettings.Builder settingsBuilder)
| Name | Description |
| settingsBuilder | SpeechSettings.Builder |
Methods
longRunningRecognizeOperationSettings()
public OperationCallSettings<LongRunningRecognizeRequest,LongRunningRecognizeResponse,LongRunningRecognizeMetadata> longRunningRecognizeOperationSettings()
Returns the object with the settings used for calls to longRunningRecognize.
| Type | Description |
| OperationCallSettings<LongRunningRecognizeRequest,LongRunningRecognizeResponse,LongRunningRecognizeMetadata> |
longRunningRecognizeSettings()
public UnaryCallSettings<LongRunningRecognizeRequest,Operation> longRunningRecognizeSettings()
Returns the object with the settings used for calls to longRunningRecognize.
| Type | Description |
| UnaryCallSettings<LongRunningRecognizeRequest,Operation> |
recognizeSettings()
public UnaryCallSettings<RecognizeRequest,RecognizeResponse> recognizeSettings()
Returns the object with the settings used for calls to recognize.
| Type | Description |
| UnaryCallSettings<RecognizeRequest,RecognizeResponse> |
streamingRecognizeSettings()
public StreamingCallSettings<StreamingRecognizeRequest,StreamingRecognizeResponse> streamingRecognizeSettings()
Returns the object with the settings used for calls to streamingRecognize.
| Type | Description |
| StreamingCallSettings<StreamingRecognizeRequest,StreamingRecognizeResponse> |
toBuilder()
public SpeechSettings.Builder toBuilder()
Returns a builder containing all the values of this settings class.
| Type | Description |
| SpeechSettings.Builder |


Follow this link to open the Entire Window scrollable demo.
The entire window might work as the viewport if windowViewport setting is set to true. Previous versions of the library (prior to 1.6.4) required the "overflow-anchor" css property to be disabled at the top level of the DOM tree (body or html tag). Today it is not necessary.


| View time
series 2D/3D
|
|
| A single time series is selected and the 2D and 3D scatter diagrams are plotted, where a delay time can also be specified. The delay regards the delay embedding of time series used in the nonlinear analysis of time series, where the 2D and 3D scatter diagrams can be viewed as projections of the underlying attractor. | |
| Select one time series |
|
| A single time series name can be selected from this list. | |
| Draw points / lines |
|
| The drawing type to be used in the plots, one of the following: points, lines, both. | |
| Delay time |
|
| The delay time for the scatter diagrams. The value can be selected by moving the bar horizontally. If a delay t is chosen the 2D scatter diagram is drawn for point pairs (x(i-t), x(i)) and the 3D scatter diagram is drawn for triples (x(i-2t), x(i-t), x(i)). | |
| 2D scatter diagram |
|
| The plot of point pairs
(x(i-t), x(i)) of the selected file, where
t is the selected delay, is
shown in a figure with the selected line or/and point type (see figure
below).
|
|
3D scatter diagram |
|
| The plot of point
triples (x(i-2t), x(i-t), x(i)) of the selected file, where
t is the
selected delay, is shown in a figure with the selected line or/and point
type (see figure below).
|
|
| Exit |
|
| The window is closed. | |
| Help |
|
| This page is displayed. |


We plan to provide an information hub for various partner's emergency messaging systems. You can click on "CONNECTIONS" in the menu above to see what platforms we plan to connect, or on "TECH SPECS" to get some (very general) details on how we plan to do that.
Our "minimal viable product" server exists at this location. We are also building a sample front-end app to illustrate how to use the API. Here you can learn more about SOCNET mission and activities.


{{site.user_description}}
Other programming languages: Haskell, Racket, C++, Java
Python libraries: Tensorflow, Keras, Nltk, Scikit-learn, Pandas, Numpy, Scipy, Matplotlib, Beautifulsoup, Scrapy, OpenCV, Pillow/PIL


ZweiFood
Attributions & Credits
Source:
GitHub
Search for location
Get Current Browser Location
Get Current Location
Opacity of Filtered/Unkown Results
Maximum Amount of Markers on Map
:Verbose Error Messages
Yelp API Key
Locu API Key
Foursquare Client ID
Foursquare Client Secret
(
)
,
Results
Options
Search
Sort
Filter
Open
Ø
$
$$
$$$
$$$$
Ect.


Wait for layout rendering...
Graph
No. of relations:
0
Min. node rating:
0
Reset filters
Start Layout
The answer


HTML is great for declaring static documents, but it falters when we try to use it for declaring dynamic views in web-applications. AngularJS lets you extend HTML vocabulary for your application. The resulting environment is extraordinarily expressive, readable, and quick to develop. Make sure you're up to date with latest Bootstrap documentation! AngularJS
Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web. Bootstrap
This template features many common pages that you might see on a business website. Pages include: about, contact, 404 and general multi-purpose pages.
A complete website design featuring various single page templates from Start Bootstraps library of free HTML starter templates.


Your pc is the engine that powers Rift. We recommend this level of hardware to ensure good performance across the range of games and experiences.
| Video Card | CPU | Memory | Video Output | USB Ports | OS |
|---|---|---|---|---|---|
| NVDIA GTX 970/ AMD R9 290 equivalent or greater | Intel i5-4590 equivalent or greater | 8GB + RAM | Compatible 1.3 video output | 3x USB 3.0 ports plus 1x USB 2.0 port | Windows 7 SP1 64 bit or newer |
Rift is unlike anything you’ve ever experienced. Whether you’re stepping into your favorite game, watching an immersive VR movie, jumping to a destination on the other side of the world, or just spending time with friends in VR, you’ll feel like you’re really there.
From the moment you pick up Rift, you’ll feel and see the attention to detail that went into its design and construction. Customizable, comfortable, adaptable, and beautiful, Rift is technology and design as remarkable as the experiences it enables.
Every pre-order of the Rift includes a headset, sensor, remote, cables, Xbox controller, EVE: Valkyrie, & Lucky's Tale.


As said by Ingo Chao :
"In IE, a relatively positioned container with a floating child needs "layout" to gain control over the float. Otherwise, the layering, the offset and the width formatting may give unexpected results."
More info on hasLayout property in IE.
With InputEx, this situation can occur if you render a form (or even a single field) in a container that does not have hasLayout = true (cf. link above).
Try to click the "Move the forms" button (you must use IE 6 or 7)


Home
About
Contact
Add Room
Let's setup your room
AIR-SENSE SENSOR IDENTIFYER
ROOM NAME
ROOM ICON
Radio
Radio
Radio
Radio
Radio
Radio
Radio
Radio
Make sure that the sensor is powerd on, and within range with the Air-Sense gateway.
Thank you! Your submission has been received!
Oops! Something went wrong while submitting the form


This is a collection of command line tools and a web service written
in Go for working with EPrints 3.3.x EPrint XML, the EPrint REST API and
directly with the EPrints MySQL repository database(s). It is used by
Caltech Library to render our https://feeds.library.caltech.edu website as well as for
migrating content into a new repository system. Some of the command line
tools maybe of more generatl interest while others are specific to
Caltech Library’s needs. Much of the test code presumes access to our
repositories so is specific to our needs.
Go base code
The programs:
- eputil is a command line utility for
interacting (e.g. harvesting) JSON and XML from EPrints’ REST API
- minimal configuration (because it does so much less!)
- epfmt is a command line utility to pretty
print EPrints XML and convert to/from JSON including a simplified JSON
inspired by DataCite and Invenion 3
- doi2eprintxml is a command line
program for turning metadata harvested from CrossRef and DataCite into
an EPrint XML document based on one or more supplied DOI
- ep3apid is a Unix style web service for
interacting with an EPrint repository via a localhost proxy. It includes
the ability to get restricted key lists as well as retrieve a simplified
JSON record representing an EPrints record
- ep3harvester is an EPrints 3.x
metadata harvesting tool working at the MySQL 8 level for EPrints
content. It harvests the contents into a MySQL 8 database, one table per
eprints repository storing the harvested metadata in JSON columns. This
tool can also harvest CSV files with information for people and groups
referenced in the EPrints repositories.
- ep3genfeeds is used to genate the
JSON documents that drive our feeds website.
- ep3datasets is a tool to generate
dataset
collections from previously harvested EPrints repositories
Use cases
Two primary use cases have driven development of EPrinttools
- Reusing the metadata and content in our EPrints 3.3.16 repositories
(see Caltech Library
Feeds
- Populating our EPrints repository from standardize data sources (see
Acacia
Project).
- py_dataset, This
Python module provides access to dataset collections which we use as
intermediate storage for JSON documents and related attachments.
- AMES, The
eprintools command line programs have been made available to Python via
the AMES project. This include support for both read and write to
EPrints repository systems.


We host a public cloud running an instance of Nimbits server, but Nimbits was designed to allow you to build an ecosystem of highly scaleable, highly available clusters for your data logging needs. It's not always practical to use a public cloud, so we offer you a way to build your own instance of Nimbits for your data collection.
Nimbits runs on the Google ™ App Engine infrastructure. You can download and install an instance of Nimbits on your App Engine Account.
You can also run Nimbits on your own Hardware or other cloud platforms such as Amazon EC2 by using a product called AppScale and deploy Nimbits to a cluster of one or more Ubuntu Linux KVM virtual machines.
© copyright 2011 Nimbits Inc - all rights reserved.
*GOOGLE is a trademark of Google, Inc.


--- layout: default.html title: Home permalink: true --- All News. {{#each collections.blog}} {{formatDate this.date}} {{this.title}} {{this.description}} {{/each}}


Execute a script.
[ FLAGS ] FILE [ VALUE... ]
The run command receives a file to be executed as a Lua script.
rbxmk run script.lua
If -
is given as the file, then the script will be read from
standard input instead.
echo 'print("hello world!")' | rbxmk run -
The remaining arguments are Lua values to be passed to the file. Numbers, bools, and nil are parsed into their respective types in Lua, and any other value is interpreted as a string.
rbxmk run script.lua true 3.14159 hello!
Including a bare `--` will cause the run command to stop interpreting flags, enabling them to be passed to the script. Note that such flags will be passed as regular strings.
rbxmk run script.lua -- --help
# Passes "--help" string.
Within the script, these arguments can be received from the ...
operator.
local arg1, arg2, arg3 = ...
{{frag "flags/desc:Description"}}