Abstract
This book contains some basic concepts, commands & conventions for Git & GitHub.
Preface
The open source community is amazing and very friendly. Contributing to it is always exciting if done in the spirit of improving the community and enjoying oneself.
We rise by lifting others.
Knowing the basics of Git & GitHub is the only prerequisite to start contributing to the FOSS (free & open source software) community and learning Git sometimes feels like a dauting task, because it is a little complicated. So to make this task easier, we have made this easy guide that will help anyone get started and keep helping them along their open source journey.
This guide is made from a lot of resources collected over time. They have been hyperlinked wherever possible & if not, they have been included in the [misc] section at the end of the book.
We would love everyone’s help to keep this guide updated and error free. Your [Pull Requests] and suggestions are most welcome! The link to the GitHub repository is https://github.com/HarshKapadia2/git_basics.
For any further questions, please feel free to contact the author, Harsh Kapadia, at https://twitter.com/harshgkapadia or via e-mail at<EMAIL_ADDRESS>|
Note
|
One might want to familiarize themselves with [these] Git terms before starting, although they will be linked at places where they are required as well. |
Okay, let’s start!
General #1
Version Controlling Systems (VCS)
-
In computer software engineering, revision control is any kind of practice that tracks and provides control over changes to source code.
-
As teams design, develop and deploy software, it is common for multiple versions of the same software to be deployed in different sites and for the software’s developers to be working simultaneously on updates.
-
Bugs or features of the software are often only present in certain versions (because of the fixing of some problems and the introduction of others as the program develops). Therefore, for the purposes of locating and fixing bugs, it is vitally important to be able to retrieve and run different versions of the software to determine in which version(s) the problem occurs.
-
It may also be necessary to develop two versions of the software concurrently: for instance, where one version has bugs fixed, but no new features (branch), while the other version is where new features are worked on (trunk).
Types of Version Control Systems (VCS)
Local VCS (LVCS)
-
Local version control system maintains track of files within the local system. This approach is very common and simple. This type is also error prone which means the chances of accidentally writing to the wrong file is higher.
Centralized VCS (CVCS)
-
In this approach, all the changes in the files are tracked under the centralized server. The centralized server includes all the information of versioned files, and list of clients that check out files from that central place.
-
Eg: Tortoise SVN
Distributed VCS (DVCS)
-
Distributed version control systems come into picture to overcome the drawback of centralized version control system.
-
Clients completely clone the repository including its full history. If any server dies, any of the client repositories can be copied on to the server which help restore the server. Every clone is considered as a full backup of all the data.
-
Eg: Git
Git
-
Git is a free and open source distributed version control system (DVCS) and has an emphasis on speed and performance.
-
It is supported by all operating systems.
-
Git is open source software distributed under the terms of the GNU (General Public License).
-
The official website is https://git-scm.com/
git --distributed-is-the-new-centralized
https://git-scm.com/
Git-Bash
-
It is a shell, ie, a CLI to use git.
-
Once Git is installed, it can be used with Command Prompt, Powershell, Terminal, Zsh, etc as well. It is not mandatory to use Git Bash.
-
The official website to download Git-Bash is https://git-scm.com/
Repositories & its types
-
Types of repos
-
Local repo
-
Remote repo
-
Public repo
-
Private repo
-
-
-
Local repo
-
Local repository is the repo on the local machine (eg: laptop).
-
The local repository has exactly the same features and functionality as any other Git repository.
-
So a Git repo on a local machine (eg: your laptop) is the same as a git repo on GitHub (granted GitHub adds additional features, but at its core they’re both Git repos) which is the same as your coworker’s local repo.
-
The local repo is everything in your '.git' directory. Mainly what is seen in the local repo are all of the user’s checkpoints or commits. It is the area that saves everything (so don’t delete it).
-
touch
-
To create a file in the directory to which the bash is pointing.
-
touch <file_name.ext>
-
Eg:
touch create_this_file.txt
-
-
|
Note
|
A local repo does not need to have a remote repo. |
-
Remote repo
-
Remote repository is the repo on the server.
-
So while most people treat a particular repo as the central repo (the one on GitHub), that’s a process choice, not a Git requirement.
-
A remote repo and local repo connection is handled using the
git remote
command. -
It can be of two types
-
Local repo
-
Remote repo
-
For more information on remote repos, refer to this section.

-
If the flag
--all
or `-a`is given then all available commands are printed.
git help
Command
git help <options>
Description
Give information about Git or a certain Git command (from the man pages in the Git package itself).
Options/Flags
No option
-
Synopsis of the git command and a list of the most commonly used Git commands are printed on the standard output.
<command_name> or <concept>
-
Any Git command name (eg: commit, add, etc…) can be entered.
-
A man (manual) page which is included in the Git package will be opened in the browser.
-
Eg:
git help add
git config
Command
git config <flags>
Description
Get and set repository or global options.
Options/Flags
--global
-
git config --global user.name '<name>'
-
git config --global user.email '<e-mail_id>'
|
Note
|
The global name and e-mail need to be set just once, ie, before Git is used for the first time (but it can be modified later if need be). |
|
Tip
|
Enter the full name and the e-mail ID registered with your GitHub account. |
-
Aliases can also be set using this flag.
--list
-
Lists the configurations of Git.
-
Eg:
git config --list
git init
Command
git init
Description
To initialize a local git repository (repo) in the location to which the bash is pointing. A hidden folder .git
is created in the directory. None of the commands below will work if there is no local git repo initialised.
git add
Command
git add <flags> <file_name.ext>
where `ext`stands for the extension of the file.
Prerequisites
The following terms are required to be understood:
Description
To add files to the staging area (refer to picture above).
Options/Flags
<file_name.ext>
-
Adds a single file to the staging area.
-
If file is located in a folder, use
directory_name/<file_name.ext>
-
Multiple file names in one command are allowed with a whitespace in between them.
-
Eg:
git add dir/dir1_file.txt
*.ext
-
All files with '.ext' extension will be added to the staging area (except for the file names in the .gitignore file).
. (period)
-
Eg:
git add .
-
Recursive command to send all untracked and modified files to the staging area (except for the file names in the .gitignore file).
-n .
-
Eg:
git add -n .
-
Shows files that will be added, but does not add them.
-
Run other
git add
commands to actually add files to the staging area.
-u
-
Stages modified and deleted files, without including new (untracked) files.
git status
Commands
git status
Prerequisites
The following terms are required to be understood:
Description
-
Run this command at any time to display the current status of the working directory.
-
This command shows two things:
-
The files in your Working Tree (untracked and modified files)
-
The files in your Staging Area (added files)
-
Options/Flags
-s
-
Gives the summary of files
-
??
implies untracked files,A
implies added files,M (red)
implies unadded modified files,M (green)
implies added modified files, etc…
git commit
Command
git commit <flags_&_options>
Prequisites
The following terms are required to be understood:
Description
A commit is simply a checkpoint telling Git to track all changes that have occurred up to the current point using the last commit as a comparison.
A commit is carried out only if there are files in the staging area, so make sure to run git add
before this command.
Every commit has a unique SHA1 associated with it.
|
Important
|
Always pull before committing & pushing. |
|
Tip
|
Commit related changes. |
|
Tip
|
Commit changes frequently. This makes it easier to revert back to older versions to correct mistakes. |
|
Tip
|
Don’t commit half-done or incomplete work. |
Commit message/title
-
Every commit has a commit message associated with it which describes the overall change made.
-
Short, crisp and to-the-point commit messages are preferred (<50 characters).
-
Use the imperative, present tense (eg: 'change', not 'changed' or 'changes') in commit messages, to be consistent with generated messages from commands like
git merge
. Eg:git commit -m "Update README.md"
-
General commit messge structure below
:sparkles: feat: add hat wobble (#26)
^--------^ ^---^ ^------------^ ^---^
| | | |
| | | +----> PR or issue resolved (if any).
| | |
| | +----> Summary in present tense.
| |
| +----> Type:- chore, docs, feat, fix, refactor,style, test, etc.
|
+----> Emoji:- :tada: :bookmark: :sparkles: :bug: :books: :wrench: :truck:
|
Important
|
Go through this gist for more on types and emojis. |
-
If extra information is needed to be given, add it to the description of the commit.
-
When only changing documentation, include
[ci skip]
(ci = continuous integration) in the commit title.
Options/Flags
No option
-
Just running
git commit
will launch a text editor prompting you for a commit message. -
After you’ve entered a message, save the file and close the editor using
:wq
or just save and exit the editor to create the actual commit.
-m "<commit_msg>"
-
Avoids opening a text editor by providing the commit message in the Command Prompt, Terminal, Powershell, etc…
-m "<commit_message>" -m "<commit_description>"
-
Enter the commit message and commit description if needed.
-a or --all
-
Automatically stages files that have been modified or deleted, but untracked files are not affected.
-
Eg:
git commit -a -m "<commit_message>" -m "<commit_description>"
-m "Add only_this_file.ext from all staged files" only_this_file.ext
-
Partially commiting staged changes
git ls-tree --full-tree -r HEAD
-
This command shows all files within your git repo that it’s tracking.
git log
Command
git log <options_&_flags>
Description
It is a running record of commits. It shows all the commits reachable from the current HEAD (where the next commit will attach).
Implicitly means git log HEAD
.
Options/Flags
<commit_SHA1>
-
It will display the details of that commit.
-
For more details of the commit, use
git show
.
<branch_name>
-
It will display the commit log of that branch.
--oneline
-
Displays the first 7 characters of the SHA1 and the commit message.
--graph
-
It will display commits as a graph.
-
To make it look better, use the
--oneline
or/and--decorate
flags. -
Eg:
git log --graph --oneline --decorate
--stat
-
Displays the files and no. of lines added or removed, in each commit.
'--patch' or '-p -<no_of_commits_to_be_displayed>'
-
Gives details of files changed, specific changes and location of changes in the file.
git rm
Command
git rm <flags> <file_name.ext>
where `ext`stands for the extension of the file.
Description
To remove files from the working tree and from the index.
git pull
Command
git pull <remote_repo_alias> <remote_branch_name>
Eg: git pull origin master
Description
Pulls (brings) the latest code from the remote repo.
To fetch and download content from a remote repository and immediately update the local repository to match the content.
-
In simple terms,
git pull
does agit fetch
followed by agit merge
. -
git pull
automatically merges commits without letting you review them first. If you don’t closely manage your branches, you may run into frequent conflicts.
git fetch
Command
git fetch <remote_repo_alias> <branch_name>
Description
On running git fetch
, Git gathers any commits from the target branch that do not exist in the current local branch and stores them in the local repository. However, it does not merge them with the current branch (unlike git pull
).
This is particularly useful if you need to keep your repository up to date, but are working on something that might break if you update your files.
To integrate the commits into your master branch, you use git merge
.
git clone
Command
git clone <remote_repo_url>.git
Eg: git clone https://github.com/HarshKapadia2/git_basics.git
Description
Clone/copy an entire remote repo into the current folder (to which the git CLI is pointing).
A new folder will be created with the name of the repo. cd
(change directory) into that folder to start using it.
git merge
Command
git merge <branch_name>
Description
The git merge
command’s primary responsibility is to combine separate branches and resolve any conflicting edits.
Merging is Git’s way of putting a forked history back together again.
The git merge
command lets you take the independent lines of development created by git branch
or git checkout
and integrate them into a single branch.
Preparing to merge:
-
Make sure to be in the branch (
git checkout <receiving_ranch>
) you want to merge another branch into (let this branch be calledreceiving_branch
). -
Make sure the receiving branch and the merging branch are up-to-date with the latest remote changes.
-
Merge using
git merge <merging_branch>
-
Eg: If you want to merge the 'feature' branch into the 'master' branch, run
git checkout master
(if you aren’t already in the master branch, ie, if your HEAD points to another branch) and then rungit merge feature
.
|
Note
|
This does not create a new commit signifying the merge. |
|
Note
|
The branch can be safely deleted. |
Merges are of mainly two types:
-
Fast forward merges (usually for small and short develop-duration features)
-
Three way merges (usually for long ranging tasks and features)
|
Note
|
git push is allowed only if you have a fast forward merge.
|
Further details here.
|
Note
|
Managing merge conflicts (using both CLIs and GUIs) is covered here. |
Options/Flags
--abort
-
This will exit from the merge process and return the branch to the state before the merge began.
--no-ff <merging_branch_name>
-
If a fast forward merge is to be carried out, but even then create a new merge commit for the symbolic merging, this flag & option can be used.
-
The text editor will open for a message. Save the merge message and close the file in the editor to complete the merge.
|
Note
|
This is useful for documenting all merges that occur in a repository, as a merge without this flag does not create a new commit. |
git branch
Command
git branch <flags> <options>
Description
The git branch
command lets the user create, list, rename and delete branches.
It doesn’t let the user switch between branches or put a forked history back together again. For this reason, git branch is tightly integrated with the git checkout
and git merge
commands.
Further details here.
Options/Flags
--list or <no_option>
-
List all of the branches in the repository.
-a
-
Lists all remote branches.
<branch_name>
-
Creates a new branch, but this does not check out the new branch.
-
Use
git checkout
to check out (view/switch to) the new branch.
-d <branch_name>
-
Delete the specified branch.
|
Tip
|
If the currently checked out branch is to be deleted, switch to a different branch and then run the above command. |
|
Note
|
This is a safe operation as Git prevents the deletion of the branch if it has unmerged changes. |
-D <branch_name>
-
Force delete the specified branch, even if it has unmerged changes.
|
Tip
|
If the currently checked out branch is to be deleted, switch to a different branch and then run the above command. |
-m <new_branch_name>
-
Rename the current branch to
new_branch_name
.
git checkout
Command
git checkout <flags> <options>
Description
The git checkout command operates upon three distinct entities: files, commits, and branches.
The git checkout command lets you navigate between the branches created by git branch
.
Further details here.
Options/Flags
<new_branch_name>
-
Switches to / views / checks out a branch with the name
new_branch_name
. -
Eg:
git checkout feature_branch
|
Note
|
git switch can also be used to achieve the same result.
|
-b <new_branch_name>
-
Creates a new branch & checks it out (switches to it) as well.
|
Note
|
The new branch is created from the curent HEAD. |
-b <new_branch_name> <existing_branch_name>
-
Creates a new branch & checks it out (switches to it) as well.
|
Note
|
The new branch is created from the last commit of the existing_branch_name .
|
<commit’s_SHA>
-
You can checkout a specific commit.
|
Note
|
This condition will land you in a detached HEAD state. |
<file_name.ext>
-
To replace a modified file in the working directory/copy with the added/committed state version of that file.
-
If there are no staged changes, then the copy of the file in the local repository is used, otherwise the current file is overwritten by the staged copy of the file.
|
Note
|
git restore can also be used to achieve the same result.
|
git remote
Command
git remote <options_&_flags>
Description
Helps to make or break connections to the remote repo from the local repo.
To add a remote repo to a local repo:
-
On GitHub, create a repo without a [license], [README.md] or .gitignore.
-
In the bash, type
git remote add origin <link_to_repo>.git
-
Do add a license, README.md and .gitignore (more on all 3 later).
Options/Flags
<no_option>
-
Lists the remote repos.
-v
-
It gives the alias and corresponding URL of the
remote
(aka the remote repo).
add <remote_repo_alias> <remote_repo_url>.git
-
To add a remote repo to a local repo.
-
Eg:
git remote add origin https://github.com/HarshKapadia2/git_basics.git
rm <remote_repo_alias>
-
Removes the remote repo from the local repo.
-
Eg:
git remote rm origin
|
Note
|
This command only removes the connection between the local and remote repo. It does not delete any data. |
git push
Command
git push -u <remote_repo_alias> <remote_branch_name>
Description
This command is used to transfer files from the local repo to the remote repo.
To set up a remote repo, refer to git remote
and creating a repo on GitHub
.
|
Note
|
From the two pictures above, it can be inferred that Git will allow pushing only if the push results in a fast-forward merge. |
git show
Command
git show <options>
Description
To see information about a specific commit or file. Use git log
to get the SHA1 of the required commit.
Options/Flags
<commit’s SHA1>
-
To see more information about a specific commit than what
git log <commit’s_SHA1>
shows.
:<file_name.ext>
-
To view the contents of committed or staged files.
-
Eg:
git show :test_file.txt
git reset
git revert
git rebase
git bisect
git diff
git switch
Command
git switch <branch_name>
git restore
Command
git restore <file_name.ext>
Description
To replace a modified file in the working directory/copy with the added/committed state version of that file.
If there are no staged changes, then the copy of the file in the local repository is used, otherwise the current file is overwritten by the staged copy of the file.
Similar to git checkout
.
General #2
Merge Conflicts
CLI
GUI
Common Mistakes & How To Correct Them
Internal Working of Git
|
Tip
|
It is recommended to go through this section only if the reader has some experience with Git. Absolute beginners do not need to know this. |
Some part of the internal working of Git will be explored through an example in this section. A Windows operating system with Git Bash is being used for this example. (Certain Unix commands work with Git Bash.)
Run git init
to initialize an empty Git [repo] in the inside_git
directory (root directory). An empty hidden directory .git
is created in the root folder.
The command du -c
is used to list the sub-directories of the root directory inside_git
and the size (in kbs) of each sub-directory.
Blob object
Create a new file in the root folder.
Now the root directory contains the .git
directory and the new file master_file_1.txt
.
Add the file to the [staging area] using [git add .
] and run du -c
once again.
Note that a new directory e6
has been added to ./.git/objects
.
Use the dir
(or ls
) command to find out which file is present in the dir ./.git/objects/e6
.
The file name 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
has 38 characters. On combining it with the folder name (e6
) at the start, it becomes a 40 character string e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
. This is a [SHA1] (Secure Hashing Algorithm 1) hash. Git encodes the content of the file (and more - more on that soon) in this hash. Every add and commit produces its own unique SHA1 hash(es). The first two characters of the hash are used for bucketing the hashes into folders by Git. The case of two hashes colliding is very rare. Git uses 4 to 8 characters to refer to a commit in short.
Now as mentioned in the previous paragraph, Git stores the contents of the file and other details in the hash. To check that out, some content needs to be added to the file. The file will then have to be added again (this will produce another hash).
From the last command in the above picture, it can be inferred that a new hash 1a3851c172420a2198cf8ca6f2b776589d955cc5
was generated.
Now check its contents using the cat
command.
Oops! That’s gibberish! So was what was said above a lie? No. Git actually compresses files with the zlib library and then hashes them. So to make sense of the hash, it needs to be de-compressed.
blob 16Git is amazing!
is the content of the hashed file in Git.
Breaking it down:
-
blob
is the file type. It is an abbreviation for 'binary large object'.Files can be of three types in Git:
-
Blob object
-
Commit object
-
Tree object
More on
commit
andtree
objects soon. -
-
16
is the file size (length).Git is amazing!
consists of 15 characters, but Git adds a null character (\0
) before the data, making the length 16. -
Git is amazing!
is the file data that was originally entered.
|
Note
|
If blob 16\0Git is amazing! is hashed using SHA1, the same hash (1a3851c172420a2198cf8ca6f2b776589d955cc5 ) will be generated!
|
The process of finding the contents of the file using cat
is pretty cumbersome. It is a better idea to use the [plumbing commands] provided by Git.
Some of the plumbing commands that are needed:
-
git cat-file -p <hash>
(-p = pretty print) to display file data. -
git cat-file -t <hash>
(-t = type) to display file type (blob, commit or tree). -
git cat-file -s <hash>
(-s = size) to display the file size (length).
Commit and tree objects
Commit master_file_1.txt
using [git commit
] and then run du -c
again.
From the above picture it can be noticed that two new directories ./.git/objects/1b
and ./.git/objects/d5
were created. Also, after commiting the file, Git gives the first 7 characters of the SHA1 for that commit.
Check the file type using the plumbing commands.
So the file type is commit
, inferring that it is a file generated through a commit.
Now check the content of the commit file.
Breaking down the output:
-
tree 1b2190cdc2801ec3df6505dc351dee878ac7f2fc
is the other SHA1 hash that was generated (remember that two files were generated in./.git/objects
on committing the file), of the typetree
. The tree is the [snapshot] of the current state of the local repository. The contents of the tree file will be looked into soon. -
Parent commit’s SHA1 hash (not present here - will be looked into in the
Adding another file (parent commit)
section below.) -
The next line has the details of the author (the one who wrote the code):
-
Name
-
e-mail ID
-
Timestamp
-
-
The next line has the details of the committer (the one who pushed the code):
-
Name
-
e-mail ID
-
Timestamp
-
-
A blank line
-
Commit message
-
Commit description (if provided) (not present here)
Now check the contents of the tree file. (Take the hash from the commit file contents.)
The tree file has entries of the files & directories in the snapshot (current state) of the local repository.
The format of each line is the same.
Have a look at 100644 blob 1a3851c172420a2198cf8ca6f2b776589d955cc5 master_file_1.txt
:
-
100644
is the mode, which is some sort of unix-style file permission and file type checking system. -
blob
is the file type. (It can be atree
object as well - covered in theCreating a directory
section below.) -
1a3851c172420a2198cf8ca6f2b776589d955cc5
is the latest SHA1 hash of the added file. It is the same as the hash generated while adding the file to the staging area. This hash can be of a blob (like in this case) or a tree file (looked into in theCreating a directory
section below). -
Name of the file.
Take a look at the connections between the commit, tree and blob files.
|
Note
|
The blob e69de has been modified to blob 1a385 and so is not connected to the tree 1b219 . Only the latest blob of every added file is connected to the new tree object when a commit is made.
|
Adding another file (parent commit)
Create another file (master_file_2.txt
), add it to Git and commit it.
Just like what was done before, check the contents of the commit file (using part of the hash 8282663
as seen in the above picture).
A new line parent d5b8f77ce1dc1a37b29885026055c8656c3e0b65
is seen. Remember, this is the hash of the previous commit. So Git is creating a graph. (A picture is provided below.) Also, the [HEAD
] will now automatically point to this (latest - 82826
) commit rather than the parent (previous - d5b8f
) commit as it was doing before. To verify, have a look at where the HEAD
is pointing.
It is pointing to the latest commit (82826
).
Now check the contents of the tree object of the latest commit.
Take a look at the new graph of the repository.
Creating a directory
Create a new file (master_dir_1_file_3.txt
) inside a a directory (dir_1
), add it, commit it and look at the contents of the commit file.
The commit file has the same format as before.
Now have a look at the contents of the tree file (with SHA1 hash f6a65
as seen in the above picture).
It is surprising to note that the tree f6a65
points to another tree abecf
! The name of the new tree is dir_1
.
Now have a look at the contents of the dir_1
tree.
So it points to the file (master_dir_1_file_3.txt
) inside the directory dir_1
.
Have a look at how the tree connected itself to the blobs.
Also have a look at the new graph of the entire repository.
Renaming a file
Rename master_file_1.txt
to the_master_file.txt
to see how Git handles it internally.
When the file is committed, Git is smart enough to recognize that a file was renamed and is not a new file, as can be seen in the last line of the above picture. It can recognize this because the SHA1 hash of the file has not changed (as the content of the file has not changed).
Now check the contents of the commit and tree files.
Take a look at the last line. The hash 1a385
is same as the hash of the original file name (master_file_1.txt
) (scroll up and check) and just the name of the file has been changed in the tree object by Git instead of creating a new blob file. This is efficient space management by Git!
Take a look at the structure of the repo.
Making changes to huge files
Add and commit a picture to Git. The size of the picture is 1.374 Mb (or 1374 kb), so it is a relatively huge file as compared to the other files (~ 1 kb).
Now make a small change to the png file contents (append a .
to the file contents) and then add and commit it again.
On comparing the SHA1 hashes of master_picture_1.png
in the latest (6d2d2
) and previous (27666
) tree, we can make out that they are different. So Git has created two different blobs (ca893
and 1f7af
) for the same file, even when they only have a very small difference.
Run du -c
now.
As it can be seen, there are two directories (./.git/objects/1f
and ./.git/objects/ca
) with the same size (1376 kb).
|
Note
|
The directory content size (1376 kb) is greater than the picture size (1374 kb) as Git adds the file type and size (length) to the blob file and then hashes it. |
So is Git inefficient at handling huge files? No. The content of the file has changed and this produces a different SHA1 hash (1f7af
) than the original SHA1 hash (ca893
) and so Git is not able to handle the change like it did when a file was simply renamed. Having multiple copies of such a huge file is not a problem in the local storage, but it will take up a lot of bandwidth while [pushing] and [pulling] from a platform like [GitHub]. So to avoid this, Git uses Delta compression. It uses the difference (diff.
in short) of one of the files and indicates the other as the parent. This is looked into in the Pack file
section below.
Pack file
Delta compression is carried out when the user pushes/pulls code to/from GitHub and when an aggressive garbage collection (git gc --aggressive
) is carried out.
Delta compression creates two files in ./.git/objects/pack
:
-
A pack file (.pack)
-
An index file (.idx)
They will be talked about soon.
Take a view of the current state of the repo.
Note the size of ./.git/objects/pack
in the above picture (0 kb).
Aggressive garbage collection will be used to carry out Delta compression and then du -c
to view the changes.
|
Note
|
The total size of the .git directory went down from 4220kb (seen in the first du -c picture in this sub-section) to 2838kb (as seen in the above picture). This is a 32.75% reduction in the size of the local repository!
|
Notice in the above picture that the size of ./.git/objects/pack
is 1380 kb and a lot of the files in ./.git/objects
have disappeared, except for ./.git/objects/e6
.
All of this will be looked into, one by one.
-
Look at the contents of
./.git/objects/pack
.As mentioned above, two files (a pack file
.pack
and an index file.idx
) are created.Have a look at the contents of both the files using the plumbing command
git verify-pack -v path/to/pack/file/<file_name>.pack
(-v = verbose). (Works with.idx
as well.)The pack file is a single file containing the contents of all the objects that were removed from the file system.
Have a look at the hash
1f7af
(the blob of the modified picture). Its size is very large as compared to the others. Now look at the the hashca893
(the blob of the original picture). It is very small in size and it has the hash of the modified picture (1f7af
) mentioned after it, indicating that its (ie, the original picture’s) parent is the modified file. Thus, Git stored the diff for one of the files rather than the entire file twice, making it space efficient!
|
Note
|
A similar example can be found here. |
|
Note
|
The pack file has a graph in it, just like the commit, tree and blob files have one! |
|
Note
|
The .idx (index) file stores the same content as the .pack file and is a file that contains offsets into the pack file so you can quickly seek to a specific object.
|
-
Now look into the
./.git/objects
directory.On running the aggressive garbage collection, Git got rid of all the files that were related to commits and added them to the pack file.
|
Note
|
On pushing and/or pulling, these files are not deleted, just a pack file and an index file are generated. |
-
The
./.git/objects/e6
directory did not get removed as it was not related (connected) to any tree object.
Finally, take a look at the log of the repository.
GitHub
What is GitHub?
-
GitHub != Git, ie, GitHub is not Git.
-
Git is a revision control system, a tool to manage your source code history.
-
GitHub is a hosting service for Git repositories.
-
So they are not the same thing: Git is the tool, GitHub is the service for projects that use Git.
-
-
GitHub is just one such service for Git. Other prominent services include GitLab, Bitbucket, Git Kraken, etc.
GitHub Repositories
-
There are two types of repositories on GitHub (These are remote repos)
-
Public repo
-
Private repo
-
-
Public repo
-
A public repository is a repo open for the world to view, download and use (ethically or unethically, depending upon the [license]).
-
Contributors can raise [issues] on the repo and make a [pull request (PR)] to it.
-
Collaborators and the owner can raise [issues] on the repo and push code to it.
-
It is a good way to improve the software and help others by showcasing the code and features as well!
-
A GitHub free user is allowed to make unlimited public repos with unlimited collaborators. (There is a limit on the number of collaborators that can be added by the owner/organisation in 24 hours.)
-
-
Private repo
-
A private repo is only open for viewing, downloading and uploading for the collaborator that the repo owner chooses.
-
A private repo will only have collaborators as contributors. Contributors can raise [issues] on the repo and make a [pull request (PR)] to it.
-
Collaborators and the owner can raise [issues] on the repo and push code to it.
-
This type of repo is usually used to work on a project with or without a team, privately.
-
A GitHub free user is allowed to make unlimited private repos with unlimited collaborators. (There is a limit on the number of collaborators that can be added by the owner/organisation in 24 hours.)
-
Terms
Repository
-
Git stores information in a data structure called a repository (repo).
-
Simply put, a repo is a place where the history of the user’s work is stored.
-
Types of repos
-
Local repo
-
Remote repo
-
Public repo
-
Private repo
-
For more information on the types of repos, refer to this section.
-
Untracked Files
-
Newly created files are untracked files.
-
They are files that have never been added to the local repository.
-
In short: Untracked files are those fileswhich are not in the .gitignore file and that have never been added to the repo.
Added Files
-
All files not in .gitignore and that have been added to the staging area of the repository.
-
The files are in their latest version (ie, they have not been modified since they were last added).
Modified Files
-
All files not in the .gitignore, that have been added to the repository (repo) and have been modified since.
-
The files are NOT in their latest version (ie, they have been modified since they were last added).
.gitignore file
-
.gitignore is a file which tells git which files (or patterns) in the directory it should ignore.
-
It’s usually used to avoid committing transient files from the working directory/copy (a copy of the most recent state of the files you’re working on) that aren’t useful to other collaborators, such as compilation products, temporary files that IDEs create, etc.
Syntax
-
Comments start with
#
. -
Ignored file names to be written in the format
file_name.ext
. eg:test.txt
-
*.ext
ignores all files with the extension.ext
. -
If a file is in a directory, use
dir_name/file_name.ext
. -
A resource for .gitignore file templates for different programming languages: https://github.com/github/gitignore
Staging (staging area/index)
-
It notes the added files in the working directory/copy - a copy of the most recent state of the files you’re working on.
-
To stage a file is simply to prepare it finely for a commit.
-
Refer to the diagram.
-
Git, with its index allows you to commit only certain parts of the changes you’ve done since the last commit.
-
Further Details can be found here.
Working Tree
-
It notes the untracked files in the working directory/copy - a copy of the most recent state of the files you’re working on.
-
Any changes to files will be marked and seen in the Working Tree.
-
Here if you make changes and do not explicitly save them to git, you will lose the changes made to your files.
-
If you make changes to files in your working tree git will recognize that are modified, but until you tell git “Hey pay attention to these files,” it won’t save anything that goes on in them.
-
Further details here.
SHA1
-
SHA = Secure Hashing Algorithm
-
It is a 40 digit hexadecimal number.
-
Every commit has a unique SHA1 associated with it.
-
All 40 characters are NOT needed for commands. The first 7 to 8 characters of the SHA1 will do.
Aliases
[Aliases] make your Git experience simpler, easier, and more familiar…
https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases
-
If you don’t want to type the entire text of each of the Git commands, you can easily set up an alias for each command using
git config
. Here are a couple of examples you may want to set up:git config --global alias.co checkout git config --global alias.br branch git config --global alias.ci commit git config --global alias.st status
This means that, for example, instead of typing
git commit
, you just need to typegit ci
. As you go on using Git, you’ll probably use other commands frequently as well; don’t hesitate to create new aliases. -
An alias can be given to the remote repo as well, to make pulling and pushing easier.
-
You can set custom aliases if you add a remote (ie, remote repo) using
git remote
. -
If you clone a repo using
git clone
, the default alias of the remote repo isorigin
.
-
HEAD
-
HEAD is a reference to the latest commit in the current branch.
-
When a commit is made, Git automatically sets the HEAD to the lastest commit.
|
Note
|
HEAD is contextual. It will point to the latest commit in the current branch. |
-
To check where the current HEAD is pointing, use
cat .git/HEAD
.-
Eg:
# in the master branch $ cat .git/HEAD # output ref: refs/heads/master
git checkout test_branch # switched to test branch $ git .git/HEAD # output ref: refs/heads/test_branch
-
-
When the HEAD points to a commit that is not the lastest commit in a branch, that is a detached HEAD. A specific commit can be referred to, using
git checkout
.
Branches
-
In Git, branches are a part of everyday development process.
-
Git branches are effectively a pointer to a snapshot of changes.
-
When a new feature is to be added or a bug — no matter how big or how small has to be fixed, a new branch is created to encapsulate the changes.
-
This makes it harder for unstable code to get merged into the main code base, and it gives the chance to clean up the future history before merging it into the main branch.
-
By default, the
master
branch is the default branch.
Collaborators
-
Collaborators are the repository (repo) owner’s team members/partners.
-
A collaborator has a lot of accesses that a repo owner has.
-
They can directly push to the repository, merge PRs, etc.
-
The owner of the repo can invite any number of collaborator from the
settings/manage access
section in the repo (there is a limit to the number of invites in 24 hrs).
|
Note
|
A contributor is a collaborator only if he is chosen to be a collaborator by the owner. So a collaborator is a contributor, but the vice versa is not always true. |
Contributors
-
Contributors are people who contribute to repositories to make them better.
|
Note
|
A contributor is a collaborator only if he is chosen to be a collaborator by the owner. So a collaborator is a contributor, but the vice versa is not always true. |
General contributor instructions
-
[Fork] the repo.
-
clone the forked repo locally.
-
Work on the contribution(s) according to the [issues] and/or [
CONTRIBUTING.md
].
|
Tip
|
Follow correct commit message structure. Eg: :bug: fix: Login button position corrected (#26, #32, #33)
|
-
Push the code to the forked repo.
-
Make a [pull request (PR)]!
Misc
PS: Be kind, humble and hardworking!
Kindness always wins.


Here are the rules that decide your fate
You will be given a random number at the start of the game.
There are four Infinity Stones below. By clicking on a stone you will add a specific amount of points to your total score.
You win the battle by matching your total score to random number, you lose the game if your total score goes above the random number
The value of each Infinity Stone is hidden from you until you click on it
Each time when the game starts, the game will change the values of each Infinity Stone
current score 0


| 016:007 Khan | : |
And they carry your loads to a land that you could not reach except with great trouble to yourselves. Truly, your Lord is full of Kindness, Most Merciful. |
| 016:007 Maulana | : |
And they carry your heavy loads to regions which you could not reach but with distress to yourselves. Surely your Lord is Compassionate, Merciful. |
| 016:007 Pickthal | : |
And they bear your loads for you unto a land ye could not reach save with great trouble to yourselves. Lo! your Lord is Full of Pity, Merciful. |
| 016:007 Rashad | : |
And they carry your loads to lands that you could not reach without a great hardship. Surely, your Lord is Compassionate, Most Merciful. |
| 016:007 Sarwar | : |
They carry your heavy loads to lands which you would not have been able to reach without great difficulty. Your Lord is certainly Compassionate and All-Merciful. |
| 016:007 Shakir | : |
And they carry your heavy loads to regions which you could not reach but with distress of the souls; most surely your Lord is Compassionate, Merciful. |
| 016:007 Sherali | : |
And they carry your loads to a land which you could not reach except with great hardship to yourselves. Surely, your Lord is compassionate, Merciful. |
| 016:007 Yusufali | : |
And they carry your heavy loads to lands that ye could not (otherwise) reach except with souls distressed: for your Lord is indeed Most Kind, Most Merciful, |
Concepts/Themes Covered: أركان الإسلام > التوحيد > توحيد الله تعالي > ربوبيته جلّ وعلا Pillars of Islam> Islamic> Oneness of Allah> His Divinity, the Great and Almighty أركان الإسلام > التوحيد > توحيد الله تعالي > صفات الله تعالى > الرؤوف Pillars of Islam> Islamic> Oneness of Allah> His Glory's Characteristics> The Full of Kindness أركان الإسلام > التوحيد > توحيد الله تعالي > وحدانيته Pillars of Islam> Islamic> Oneness of Allah> Singularity and Being Unique الإنسان والعلاقات الاجتماعية > الإنسان > تسخير الحيوانات له Man and The Social Relations>Man>Exploiting the Animals for him الإنسان والعلاقات الاجتماعية > الإنسان > شرفه ودنوه Man and The Social Relations>Man>When Honourable and When Unhonourable الإنسان والعلاقات الاجتماعية > الرجل والمرأة Man and The Social Relations>Man and Woman العلوم والفنون > الحقائق العلمية و الإشاة إلى وقائع أيدتهاالإكتشافات العلمية > الحيوانات والحشرات Science and Art> The Scientific Facts and the Indication to Facts which have been supported by the Scientific Discoveries>Animals and Insects
This tool uses eight English parallel translations for the Holy Quran imported from Mr. Clay Smith. You can also visit Qurany Concepts for browsing the Quran themes or topics. If you want to search the Holy Quran for keywords, please visit Qurany Keywords.


JSON Editor is a collection of jquery functions to convert a json array to an editable html table and then back to jason array
json array should be in a below format
[{'key1':'value1_A', 'key2':'value2_A'},{'key1':'value1_B', 'key2':'value2_B' },{'key1':'value1_C', 'key2':'value2_C' }]
This is an array of javascript object and each object is a list of key & value pairs
Some features of the code
- In a key value pair; the value can be a single string/number or can be an object or array of objects as well. In this case the created table will have a child table in place of value.
- In the editor you can insert new values, columns, rows, tables and delete the existing ones
- The output JSON is simplified in such a way that if a key doest not contain a value, it is removed from the resultant JSON
- The editor interface is created to be very user friendly, one can just right click and performs the operations
How to use
After including the javascript file in you code just call the below function
jsonEditorInit(table_container_id, json_input_container_id, json_output_container_id, json_to_table_btn_id, table_to_json_btn_id);
-
table_container_id: id of the container where the editor will be created
-
json_input_container_id: id of the input element from where the json array is to be taken
-
json_output_container_id: id of the output container where the output json is to be shown
-
json_to_table_btn_id: id of the button which will be used to initiate the json to table call.
-
table_to_json_btn_id: id of the button which will be used to initiate the table to json call.


for me, personally, this battlefield will be skipped.
What i don't like is...
... the counterstrike play style - All what i've loved in BF is gone in BF Hardline. They not should call it battlefield because the only thing that is the same is the underlying engine, frostbite.
... for me it feels like a downgrade - graphics are worse, all feels technically not so good as in BF
... if i don't mind about the above to points, why i should buy this game? For me it doesn't have an reliable improvement from BF3/BF4 to BFH. It's just another 7/10 game in the already supersaturated shooter genre.
BF3 was a revolution
BF4 was a evolution
BFH ???
Just my thoughts, what's yours?
Fortunetely i don't have to buy this game to make BBLog work in BFH :)
Post edited 1 x times, last by
Dendari
Translator
Dendari
Translator
So far I'm enjoying most of my time spent with the Beta, but I agree with your points, especially the third one. It doesn't feel like a polished AAA game, it's more like a (high quality) mod for BF4 and shouldn't be priced like a full game.
Definitely not gonna buy it, even if it's on sale (most likely will be dead at that point).
Nano
Global Moderator
I don't think is BFH is a Battlefield game. Maybe is a good game, but isn't Battlefield.
Visceral/EA/DICE are using the name to sell, obvious.
I don't like the Beta (Closed, because this Open is a trial demo, IMO). I'm not going to buy until a good promotion sale (50%, maybe?), this game not worth full price unfortunately.

MatG-DK
I agree that this is nothing but a high quality mod for BF4 and should be sold for lower price..
But then again, i've been playing the beta and must say i enjoy it. It may have potential to be a success, maybe.
BF3/4 did became better and better if u compare them with the Beta's and first release.
I admit im a pre-order BF fan, cause i like to show my support, even if they make a shitty game sometimes.
Like my local football team, i support them even when they loose and play like sh*t :-)
The graphic can be better and hopefully the game will update to the high quality standard we know from BF4.


Rate Overrides is a optional feature allowing you to define special rates charged based on what Joomla Group a customer is assigned to. These overrides can be applied to resource(s), service(s), extra(s) or seat type(s).
Initial rate setup is done in the respective entity's setup screen. For example, the resource rate is set in the resource setup screen.
Rates set here override those rates so you can do things like, offer a different rate for registered users or users assigned to specific Joomla Groups.
Before setting up an override rate, you should be aware of ABPro's order of preference in different types of rates.
Order of Precedence
Service rate has precedence over resource rate. If you define both, the service rate is used.
Seat price has precedence over both resource and service rates.
The Override rates do not compromise this order of precedence.
For example, if you define an override rate for a Resource but you have a Service rate, the Service rate it used.
Cancel: Abort changes and return to the previous screen.
Save: Save changes and return to the previous screen.
Help: Opens this help screen.
Type:
[Edit] This shows the type of override being edited.
[New] This drop down list allows you to choose the type for a new override.
Name:
[Edit] This shows the specific entity (resource, service, extra or seat type) for the override.
[New] This drop down list populates with the specific entities based on the Type selection. Selecting type of 'Extra' will cause this box to fill with all the 'Extas' so you can pick a specific one to override.
Group: This shows what Joomla Group the override applies to. If you setup your resource with a rate of $10, then add a resource type override for group 'registered' as $8, when a logged in user makes a booking, they will receive the $8 rate. If you create multiple overrides for different groups, ABPro will give the customer the lowest rate they are eligible for based on group(s) to which they are assigned.
Rate: This is the rate for this override. You cannot change the units of a rate. For example if you resource rate is setup as per hour, the override will be per hour also.
Published: Indicates the published state.


orbiting the
Camera
about an arbitrary pivot point
click on the house, then drag to orbit that point
author:
Der Schmale


"Create with me"
I am young and talented computer nerd who enjoys creating as many things as humanily possible. I will experiment with most things I can get my hands on ranging from computers to my garden. I spend my time learning new things and planning for my future.
Over the years I have had many hobbies from gardening to building computers and even graphic arts. Although now, I enjoy designing applications for the web, broadening my communication skills, and building applications to make life easier. I find the "new frontier" that is web development a fun and worthwhile experience.
There is much more on the way so stay tuned and check back in soon! Thank you for taking the time to learn more about me and fill free to email me at through<EMAIL_ADDRESS>for business inquiries or just to chat.


Follow Us at twitter @username This page must be refreshed every 5 seconds in order to get latest update Tweets by frrhni
This page must be refreshed every 5 seconds in order to get latest update


|
PX4 Firmware
PX4 Autopilot Software http://px4.io
|
#include <rtcm.h>
Public Member Functions | |
| RTCMParsing () | |
| ~RTCMParsing () | |
| void | reset () |
| reset the parsing state More... | |
| bool | addByte (uint8_t b) |
| add a byte to the message More... | |
| uint8_t * | message () const |
| uint16_t | messageLength () const |
Private Attributes | |
| uint8_t * | _buffer {nullptr} |
| uint16_t | _buffer_len |
| uint16_t | _pos |
| next position in buffer More... | |
| uint16_t | _message_length |
| message length without header & CRC (both 3 bytes) More... | |
| RTCMParsing::RTCMParsing | ( | ) |
| bool RTCMParsing::addByte | ( | uint8_t | b | ) |
add a byte to the message
| b |
Definition at line 60 of file rtcm.cpp.
References _buffer, _buffer_len, _message_length, and _pos.
Referenced by GPSDriverAshtech::parseChar(), and GPSDriverUBX::parseChar().
|
inline |
Definition at line 61 of file rtcm.h.
References _buffer.
Referenced by GPSDriverAshtech::parseChar(), and GPSDriverUBX::parseChar().
|
inline |
Definition at line 62 of file rtcm.h.
References _pos.
Referenced by GPSDriverAshtech::parseChar(), and GPSDriverUBX::parseChar().
| void RTCMParsing::reset | ( | ) |
reset the parsing state
Definition at line 49 of file rtcm.cpp.
References _buffer, _buffer_len, _message_length, _pos, and RTCM_INITIAL_BUFFER_LENGTH.
Referenced by GPSDriverAshtech::decodeInit(), GPSDriverUBX::decodeInit(), and RTCMParsing().
|
private |
|
private |
|
private |
|
private |
next position in buffer
Definition at line 67 of file rtcm.h.
Referenced by addByte(), messageLength(), and reset().


Training
After Registration and selection Process, You will be given roadmap of our 12-week training program, requirements and all.
Phase I - At our bootcamps we never assume that you know everything about tech, we’ll be starting with Basics and fundamentals of Programming
Phase II -Weekly Assignments, Practical session
Phase III -Capstone Projects
Job
We are committed to helping you secure a new job after finishing your bootcamp. With your hard-work and our help, we’re confident that you can get hired by a fantastic company.


HI THERE! I'm Laurette Mong'ina. A graphic designer and a full stack developer. I'm still learning all these skills. I live in Nairobi. I love designing and creating websites and I'm looking for more opportunities to work in web development.
I love reading books during my free time and listening to music(my taste is eclectic). I love travelling and I term myself as an adventuruos spirit. I am a seeker of knowledge in everything.
I decided to take programming because I love developing things and I love my autonomy plus flexibility in my career.
I schooled in JKUAT,Juja for a degree in Medicine. Later on I decided to switch careers to Software Development in Moringa School.
Working on Anitas kitchen was a fantastic experience. I designed and created the landing page using html and css..The project was a landing page for a restaurant Anitas-Kitchen.My project was deployed on github.
I worked on my favourite band project. It was about Sauti Sol. Included their biographies,albums and some of my favourite songs.It was my first project and I felt like I outdid myself.Languages used were html and css.
Hey!Incase you want to link up, you can send me an email via the mail below.
monginalaurette@gmail.com


QUICK NAVIGATION
Cat Turf
Word Cloud
Scatterplot
→ geoJSON
CAT TURF
WORD "CLOWDER"
(clowder = a group of cats .. I'll show myself out ..)
SCATTERPLOT
Return To Navigation
Pet listings sourced from
Pawboost
on 05/01/19


Dfs
May 17, 2013
App Academy W1D5
DFS
Today is a Friday so today’s post comes a little early. I am going to go and post this a little early. In today’s class we began an introduction to algorithms and data structures.  To start us off as gently as possible, we started with understanding what was a data structure. We put together Node classes, which have parents, child nodes, and when put together make up a tree. Using this tree, we would be able to put together the next projects.
An algorithm is kind of like a recipe for data. It is written up in an abstract concept that can then be written in any programming language available. The two big algos that we worked on were Depth-First Search and Breadth First Search. These are things used for searching items in a Tree. In Depth First Search, you pick a “branch” of the tree and then explore it as deeply as you can. This way, you can be very thorough in the exploration of a branch before you move on to other branches. The Breadth First Search, you go through each level of a tree before you exit that level and then go down one more level.
Monday is the first assessment. If you fail 2 two of them they ask you to leave. I have to study hard this weekend and review everything that I have learned. Doing programs over and over again I think will help here.
3 Top Things I Learned:
After reviewing a lot of stuff last night, I felt that I made a lot of progress in implementing recursion. It is still challenging though. I put together a DPS program for a tree that used recursion but missed all the possible base cases. My partner did a good job in helping me find it.
It is interesting how things come up again and again. When putting together an earlier project (http://web.archive.org/web/20120418110425/http://www.rubyquiz.com/quiz44.html) word_chains, Ned had explained that a good way to help do this was to build a pool of possible words and then expand it slowly outwards. It took me a very long time to do this but the experience in putting it together helped in understanding DFS.
Names help a lot. While reading DFS on Wikipedia, I suddenly came across an explanation that labeled a vague abstract concept - the array store that stores the data objects that we have yet to scan and compare to our target - a “queue”. Ned had called this earlier a “pool” or a “thing that has to be expanded, possible words”. Calling a queue suddenly opened my eyes and when I came across DFS again it flowed much easier.
Things I Think I Think:
Reading the Wikipedia and understanding the pseudocode that they provide does so much in helping you understand how to implement an algorithm.
Talking through things aloud makes your throat parched but helps clear your brain
Putting “return” at the bottom of my methods is a bad habit that I just can’t quit
I keep writing “var ++” to increment something by 1 instead of the right “var += 1”. Ruby does not recognize this and gives me errors.
Share


Accessible travel info & resources for the 30 most visited U.S. cities.
Travel resources for 30 popular U.S. cities.
Write accessibility reviews for hotels, attractions and businesses.
Write accessibility reviews.
Reserve hotels, flights and cars. Save 10-60% on hotels worldwide through clubGO.
Reserve hotels, flights and cars.
Ask questions & share ideas on the accessible travel forum.
Share ideas on the accessible travel forum.


What is your current job? (You can select multiple options)?*
Open Source Developer
Academic Researcher
Industrial Developer
Industrial Researcher
Other
Please, specify here*
Please rate your expertise with*
Very poor
Poor
Fair
High
Very High
Software Development
Code Review
Bug Reporting
Bug Fixing
Tests
Have you ever contributed for open source projects? If yes, could you provide the links of these projects?
Please enter your e-mail (it will not be disclosed), if you want to participate on the raffle of US$ 100 voucher at Amazon.com or
want be contacted in future researches.


Body found in burning car in Dublin
by By Digital Desk staffA body has been discovered in a car which is on fire in Dublin.
Emergency services attended the scene of the car fire earlier this evening.
A body was subsequently discovered in the car in the Mount Andrew area.
Gardaí are attending the scene tonight, which has been sealed off for examination.
It is unknown at this stage if the person is a man or a woman and their body has yet to be identified.
READ MORE
Taoiseach backs priest’s anti-violence stance over Kevin Lunney attack


Week 13 - day in the life of ETa¶
subtitle - Don’t Tell My Boss¶
Real World Scene¶
My boss - says I have to get Tmin, Tmax and Tavg - done for 150 years - converted to Celsius
from that useless Kelvin data i gave her - she is not happy
she says I have until COB Friday or look for another job
The problem is it looks like golfing weather for Monday and Tuesday
So I think use the cloud and docker - maybe this can be done
I spend a day figuring out the sophisticated algebra and try to play that up - But she is on to me.
docker - container from jupyter to orchestration in 2 easy steps
run the orchestration¶
two system engineers walk into a bar
… the first one asks why can’t we do that simple Kelvin conversion by friday on our current platform
… the second eng says cause x and y suck
… the next day the 2nd eng is explaining this converstion to his Govt Sponsor as:
well you see the Netapp is bandwidth constrained and not really intended for large image data xfers and Microsoft has chosen Linux as its highly scalable platform for its Azure Cloud.
Community Interest¶
Looking at Pangeo and Docker on HPC
Could support nice hybrid solutions between the cloud and HPC(s) Denali, Tallgrass
need to examine Singularity and Shifter on the HPC
I may call my orchestration method - manual_transmission :-)
Tony prefers scaling with docker versus other methods - Why:
MPI – Message Passing Interface¶
Distributed Memory Systems
More difficult to parallelize
Requires a change in fundamental programming
Kubernetes is well over 1 MILLION lines of code
Slurm - the s stands for simple - is over 500,000 lines of code
Simple Orchestration - 129 lines of code
ubuntu@ip-10-12-69-188:/opt/kelvin_celsius/api$ wc -l kelvin_*.py
129 kelvin_orchestration.py
Community Case Studies¶
VegET in the cloud
Cloud Scaling
Model validation without ARC tools
Simple Visualizations
Pathfinder project for other cloud enthusiasts
ETa pipeline from SSEBoP (Google Earth Engine)
Pushing data into a Dark Repo
Web Interface for endusers
Many data users just want direct access to COGs
Day in the Life of the low budget ET project¶
¶
Port the VegET model from Windows and Netapp - to cloud, xarray and S3 data storage
Run the model on small AOIs
Scale the Model by slicing the problem spatially
glue the parts together with simple xarray code and multiple docker containers for scaling
Wrangle and Wrangle Data for Delaware, Conus, NorthAmerica, Globe
Also just to make it more challenging - add projected or future model data for temperature and precip
do this with as few people as possible with tight deadlines
Run the model for 150 years over Delaware
Notice some data model issues over 2000-2020
Visually apparent with jupyter-python-panel-app.ipynb
Run DRB again for 70 years times 2 with different soil intercept values.
Hire a
Model Integrity Analyst
OlenaWrite a simple pandas model simulator
replaces old windows manual excel spreadsheet methods
Discovered Kelvin and Celsius Confusion
Wrote a very simple Kelvin–>Celsius Conversion Python Notebook –> Python App with Argparse API
Run this in class today 1950 –> 2099
Notebook prototype/bread-board
Slicing in python and xarray - time-series
simple docker image
basic orchestration 101
functional programming like
ds = ds - 273.15
Convert to pure Python - Olena and add argparse to replace hardcoded values
jupyter nbconvert –to script my_ugly_notebook.ipynb
Create an orchestration python wrapper - borrow an old one and customize this


Open Source
Node.js
(Former Technical Steering Commitee)
bpftrace
(Former maintainer)
Restify
(Maintainer)
V8
(Former contributor)
libstapsdt
(Author)
@mmarchini/observe
(Author)
llnode
(Former Maintainer)


Shared Recipes
Home
Recipe 1
Recipe 2
Navigation Section in Header
"Mexican Chicken Soup
Tired of plain Chicken Soup? Try this flavorful recipe!
" Quick Chicken Piccata
In a rush? Try this quick Chicken Piccata recipe!


TRUE ROMANCE A film review by<EMAIL_ADDRESS>Copyright 1993 by<EMAIL_ADDRESS>CAST: Christian Slater, Patricia Arquette DIRECTOR: Tony Scott SCREENPLAY: Quentin Tarantino RUNNING TIME: 1:57 RELEASE: September 10, 1993
The road picture is just about the ultimate medium for action movies. I mean, where else do you get the chance to visit so many different places and meet so many different kinds of people? Of course, along for the ride should be at least two interesting people with whom we, the audience, can do all that and leave the theater in one piece--and perhaps be entertained in the process. Such is the case with TRUE ROMANCE.
The film opens in a bar, where we first meet Clarence. He is near drunk, talking to no one in particular about his idol (yeah, you guessed it ... Elvis). He goes to a movie theater to watch some kung fu flick, and it is then that we meet the other protagonist of the piece--Alabama.
It's love at first sight. They talk in a diner, visit his workplace, and then--before you can say the S word--they're at his apartment doing the nasty under a light blue hue. Afterwards, Alabama tells him that she's been a prostitute for three days. "I'm completely monogamous. When I'm with a man, I'm with *him* and nobody else," she tells a confused Clarence. Obviously, her job didn't work out. And to make things worse, she's in love with Clarence now. Guess what happens.
Clarence and Alabama get hitched. After that, Clarence feels it his duty to retrieve his wife's suitcase of clothing. So, he goes to the residence of Alabama's pimp, Drexel (played by Gary Oldman). He ends up killing the pimp, grabs the suitcase and runs. He and Alabama later open the case, and find it filled with cocaine. "Those aren't my clothes," Alabama laughs. But Clarence doesn't find the situation so funny. What are they gonna do? They do what any two normal kids on the run from the mob and the police and drug dealers would do--they attempt to sell the stuff. Things don't turn out so great.
Like I said before, I like road movies. And this *is* a road movie if nothing more. But there's a lot more. As far as characterization and plot go, this film has it's head in the right direction. Too bad it fails t make Clarence or Alabama interesting people. Sure, we care about both of them. But they're really just one note harped and harped and harped til we get a headache. The characters that *are* worth your time are the supporting players: Gary Oldman goes way over the top in his role; Christopher Walken has the best cameo; Dennis Hopper does his usual thing as Clarence's dad, who is reluctant to help his son; and Brad Pitt is quite funny as a totally stoned beach bum who couldn't care less about the world. The soundtrack is kickin', the direction and production values as slick as they come, and the writing by RESERVOIR DOGS dude Quentin Tarantino combines just about every action film cliche in the book.
There is testosterone pumping at all times throughout the film, and there is also a message. Violence is wrong, but it happens and we just have to deal with it. There also exists a theme of what would two immature kids do in a situation like the one that Clarence and Alabama are in. I'm not sure if TRUE ROMANCE gets all its messages across clearly, but they *are* there--just dig deep. Take your time with this movie, and have a wild ride too. Enjoy.
CRITICAL RATING: ***(1/2) RATED R, for Violence and Profanity like you wouldn't believe
.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Basalt
/
basalt.player
/
ResultStatus
/
PLAYLIST_LOADED
PLAYLIST_LOADED
PLAYLIST_LOADED
Returned when a playlist of AudioTracks is loaded.


I'm professional Web Developer: Expertise in HTML/CSS | JavaScript | Photoshop | WordPressAnalytical | SkillsSEO | Responsive Design. .
Front-end web developers are responsible for how a website looks. They create the site's layout and integrate graphics, applications (such as a retail checkout tool), and other content. They also write webdesign programs in a variety of computer languages, such as HTML or JavaScript.
Back end development refers to the server side of an application and everything that communicates between the database and the browser. Back end Development refers to the server side of development where you are primarily focused on how the site works
Web development tools come as browser add-ons or built-in features in web browsers. Most popular web browsers, such as Google Chrome, Firefox, Internet Explorer, Safari and Opera, have built-in tools to help web developers, and many additional add-ons can be found in their respective plugin download centers.
This project is all about the company which is offers many services.Prince Vijay is available for free for as long as you want, but if you require professional features like your own domain name or priority support, you must choose from one of their 6 premium plans ranging from “Combo” to “Business VIP”.
Check it out


Exotic cat
Known as the lazy man’s Persian, the Exotic Shorthair has the body type and easygoing nature of the Persian but without the coat length and need for daily grooming.
History and Origins
The Exotic Shorthair was not an intentional breed. This delightful accident was the result of American Shorthair breeders trying to bring the silver color and green eyes of the Persian breed to their breed. When they bred their cats with Persian cats, the resulting kittens didn’t look like American Shorthairs. Instead, they retained the Persian look, but with a short, plush coat. To introduce the gene for a short coat, other breeders brought in Burmese or Russian Blue cats. Those offspring were bred back to Persians, creating the Exotic Shorthair breed.
Lifespan
15+ years
Colors
The Exotic Shorthair’s plush coat comes in white, black, blue, red, cream, chocolate, lilac and silver, plus various patterns and shadings.
Health
Exotic Shorthairs can have hereditary health issues, so reputable breeders take steps to screen for Polycystic Kidney Disease (PKD) and a tendency to develop calcium oxylate stones in the urinary tract. Because of their flat faces, Exotics may have breathing problems. This face shape may also make them prone to heat sensitivity. An air-conditioned home is recommended.


Home
About
Face-Off is finding the faces in your photo(s)
{{sess_id}}
{{form2.csrf_token}} {{form2.done(hidden="true", id="done-input")}}
0%


Preparation time
1-2 hours
Cooking time
over 2 hours
Serves
Serves 6-8
Equipment and preparation: You will need a solid roasting tin.
Pre-heat the oven to 240C/475F/Gas 9.
If you dust the fat surface of the beef with mustard and the flour - just rub them in gently - then season with salt and pepper, it becomes extra crusty during cooking. So do that first, then place the joint in the roasting tin and tuck the two pieces of onion in close to the meat. The onion will caramelise as the beef cooks and give a lovely flavour to the gravy.
Now place the meat just above the centre in the oven and give it 20 minutes cooking at the initial temperature; after that turn the heat down to 190C/375F/Gas 5 and cook it for 15 minutes to the pound 450g/16oz for rare, adding another 15 minutes for medium rare and another 30 minutes for well done. While the beef is cooking, lift it out of the oven from time to time, tilt the tin and baste the meat really well with its own juices - this ensures that the flavour that is concentrated in the fat keeps permeating the meat, and at the same time the fat keeps everything moist and succulent. While you're basting close the oven door in order not to lose heat.
When the beef is cooked, remove it from the oven, transfer it to a board and allow it to stand in a warm place for up to an hour, loosely covered with foil, before carving - to let all the precious juices that have bubbled up to the surface seep back into the flesh. Also, as the meat relaxes it will be easier to carve. Meanwhile, make the gravy.
After removing the meat from the roasting tin, tilt to see how much fat remains - you need about 2 tbsp for this amount of gravy (the rest can be spooned into a dish and used for Yorkshire pudding). Place the roasting tin over a medium heat and sprinkle the flour into the fatty juices. Then, using a wire whisk, blend in the flour using a circular movement.
When you have a smooth paste, slowly add the hot vegetable water, whisking all the time, and scraping the base of the tin to incorporate all the residue from the roast. When the gravy is bubbling, taste to see if it needs a little more seasoning, then let it carry on bubbling and reduce slightly to concentrate the flavour.
You can now pour the gravy into the jug and keep it warm if lunch is imminent or, if not, leave it in the roasting tin and re-heat gently just before serving.
To make the horseradish sauce, simply mix all the ingredients together in the bowl you're going to serve it in.


[gecode-users] gecode
penche21 penche21
penche21 at hotmail.com
Sun Mar 18 10:54:30 CET 2007
Hi,
I guess you are using the default branching..
To find only the first solution just use DFS
to find all solutions use BAB then you are done.
But you say "solutions which are different". This sounds me like you need
some symmettry breaking to eliminate some solutions.
Cheers,
penche
>From: Martin Mann <mmann at informatik.uni-freiburg.de>
>To: kemmar amina <kemmami at yahoo.fr>
>CC: users at gecode.org
>Subject: Re: [gecode-users] gecode
>Date: Fri, 16 Mar 2007 20:51:05 +0100
>
>>I use gecode and I want to print just the solutions which are different ,
>>not all, what can I do?
>
>???
>
>what is your problem?
>using a branching in your space?
>usually all solutions found by a search engine like DFS or BAB are
>different if you specified a branching ?!?!?
>
>sorry, but at least for me you gave too less information to understand the
>concrete problem and to provide some suggestions.
>
>yours,
>
>Martin
>
>--
>Martin Mann, Dipl. Bioinf.
>Bioinformatics - Inst. of Computer Science
>Albert-Ludwigs-University Freiburg
>Tel: ++49-761-203-8259
>Fax: ++49-761-203-7462
>http://www.bioinf.uni-freiburg.de/~mmann/
>
>_______________________________________________
>Gecode users mailing list
>users at gecode.org
>https://www.gecode.org/mailman/listinfo/gecode-users
_________________________________________________________________
Sohbet ve eglence, web kamera ve sesli sohbet Messenger'de.
http://messenger.msn.com/?mkt=tr&DI=3490&XAPID=2584
More information about the gecode-users
mailing list


Dealer's Hand
Your Hand
HIT
STAY
* Aces only count at 11. Will add dual value Aces eventually
3%
20%
70%
Next card is Blackjack
|
Neither Blackjack / Bust
|
Next card busts
RESTART


The following
Is an integral
Enable Katex in the config file by setting the katex
param to true
. This will import the necessary Katex CSS/JS.
See the online reference of supported TeX functions.
Note: For inline math to render correctly, your content file extension must be .mmark
. See the official mmark site.
Inline math: $$ \varphi = \dfrac{1+\sqrt5}{2}= 1.6180339887… $$
Inline math:
Block math:
$$
\varphi = 1+\frac{1} {1+\frac{1} {1+\frac{1} {1+\cdots} } }
$$
Block math:


|
Introduction to Data Science with R The R Bootcamp |
In this practical you’ll practice “data wrangling” with the dplyr
and tidyr
packages.
By the end of this practical you will know how to:
Open your TheRBootcamp
R project. It should have the folders 1_Data
and 2_Code
. Make sure that the data files listed in the Datasets
section above are in your 1_Data
folder.
Open a new R script. At the top of the script, using comments, write your name and the date. Save it as a new file called wrangling_practical.R
in the 2_Code
folder.
Using library()
load the set of packages for this practical listed in the packages section above.
## Name
## Date
## Data practical
library(XX)
library(XX)
library(XX)
library(XX)
trial_act
data. Using the following template, load both the original and demo data into R and store it as a new object called trial_act
and trial_act_demo
.# Load trial_act.csv from the data folder in your working directory
trial_act <- read_csv(file = "XX")
trial_act_demo <- read_csv(file = "XX")
# Print trial_act object
trial_act
trial_act_demo
trial_act
data with names(XXX)
names(XXX)
rename()
, change the column name wtkg
in the trial_act
dataframe to weight_kg
. Be sure to assign the result back to trial_act
to change it!# Change the name to weight_kg from wtkg
trial_act <- trial_act %>%
rename(XX = XX)
Look at the names of your trial_act
dataframe again, do you now see the column weight_kg
?
Change the column name age
to age_y
(to specify that age is in years).
select()
function, select only the column age_y
and print the result (but don’t assign it to anything). Do you see only the age_y
column now?XXX %>%
select(XXX)
Using select()
select the columns pidnum
, age_y
, gender
, and weight_kg
(but don’t assign the result to anything)
Now it’s time to create a new dataframe! Select the columns pidnum
, arms
, cd40
, cd420
, and cd496
and assign the result to a new object called CD4_wide
. The cd40
, cd420
, and cd496
columns show patient’s CD4 T cell counts at baseline, 20 weeks, and 96 weeks. After you create CD4_wide
, print it to make sure it worked!
XX <- trial_act %>%
select(XX, XX, XX, XX, ...)
starts_with()
? Try adapting the following code to get the same result you got before.CD4_wide <- trial_act %>%
select(pidnum, arms, starts_with("XXX"))
pidnum
and age
. Create this dataframe by selecting all columns except pidnum
and age
(hint: use the notation select(-XXX, -XXX))
to select everything except specified columnsmutate()
function, add the column age_m
which shows each patient’s age in months instead of years (Hint: Just multiply age_y
by 12!)trial_act <- trial_act %>%
mutate(XX = XX * 12)
mutate
, add the following new columns to trial_act
. (Try combining these into one call to the mutate()
function!)weight_lb
: Weight in lbs instead of kilograms. You can do this by multiplying weight_kg
by 2.2.cd_change_20
: Change in CD4 T cell count from baseline to 20 weeks. You can do this by taking cd420 - cd40
cd_change_960
: Change in CD4 T cell count from baseline to 96 weeks. You can do this by taking cd496 - cd40
XXX <- XXX %>%
mutate(weight_lb = XXX,
cd_change_20 = XXX,
XXX = XXX)
gender
column, you will see that it is numeric (0s and 1s). Using the mutate()
and case_when()
functions, create a new column called gender_char
which shows the gender as a string, where 0 = “female” and 1 = “male”:# Create gender_char which shows gender as a stringh
trial_act <- trial_act %>%
mutate(
gender_char = case_when(
gender == XX ~ "XX",
gender == XX ~ "XX"))
arms
is also numeric and not very meaningful. Create a new column arms_char
contains the names of the arms. Here is a table of the mapping| arms | arms_char |
|---|---|
| 0 | zidovudine |
| 1 | zidovudine and didanosine |
| 2 | zidovudine and zalcitabine |
| 3 | didanosine |
mutate()
. That is, in one block of code, create age_m
, weight_lb
, cd_change_20
, cd_change_960
, gender_char
and over50
using the mutate()
function only once. Here’s how your code should look:trial_act <- trial_act %>%
mutate(
age_m = XXX,
weight_lb = XXX,
cd_change_20 = XXX,
XXX = XXX,
XXX = case_when(XXX),
XXX = case_when(XXX)
)
arrange()
function, arrange the trial_act
data in ascending order of age_y
(from lowest to highest). After you do, print the data to make sure it worked!trial_act <- trial_act %>%
arrange(XXX)
Now arrange the data in descending order of age_y
(from highest to lowest). After, look the data to make sure it worked. To arrange data in descending order, just include desc()
around the variable. E.g.; data %>% arrrange(desc(height))
You can sort the rows of dataframes with multiple columns by including many arguments to arrange()
. Now sort the data by arms (arms
) and then age_y (age_y
). Print the result to make sure it looks right!
trial_act <- trial_act %>%
arrange(XXX, XXX)
filter()
filter()
function, filter only the rows from males (Hint: gender_char == "male"
)trial_act %>%
filter(XXX == "XXX")
Create a new dataframe called trial_act_male
that only contains rows from males (hint: just assign what you did in the previous question to a new object!). After you create trial_act_male
, print it to make sure it only contains data from males!
Filter only rows for patients under the age of 60.
A colleague of yours named Tracy wants a datafame only containing data from females over the age of 40. Create this dataframe with filter()
and call it trial_act_Tracy
. After you create the dataframe, print it to make sure it looks correct!
trial_act_Tracy <- XXX %>%
filter(XXX > XXX & XXX == XXX)
left_join()
The trial_act_demo.csv
file contains additional (fictional) demographic data about the patients, namely the number of days of exercise they get per week, and their highest level of education. Our goal is to add the demographic information to our trial_act
data.
In order to combine the two dataframes, we need to find one ‘key’ column that we can use to match rows. Look at both the trial_act
and trial_act_demo
dataframes. Which column can we use as the ‘key’ column?
Use the left_join()
function to combine the trial_act
and trial_act_demo
datasets, set the by
argument to the name of the key column that is common in both data sets. Assign the result to trial_act
.
trial_act <- trial_act %>%
left_join(XX, by = "XX")
trial_act
dataframe. Do you now see the demographic data?Remember the CD4_wide
dataframe you created before? Currently it is in the wide format, where each row is a patient, where key data (different CD4 T cell counts) are in different columns like this:
# A tibble: 2,139 × 5
pidnum arms cd40 cd420 cd496
<dbl> <dbl> <dbl> <dbl> <dbl>
1 10056 2 422 477 660
2 10059 3 162 218 NA
3 10089 3 326 274 122
4 10093 3 287 394 NA
5 10124 0 504 353 660
6 10140 1 235 339 264
7 10165 0 244 225 106
8 10190 0 401 366 453
9 10198 3 214 107 8
10 10229 0 221 132 NA
# … with 2,129 more rows
Our goal is to convert this data to a ‘long’ format, where each row represents a single CD4 T cell count for a specific patient, like this:
# This is the same data in 'long' format
CD4_long
# A tibble: 6,417 × 4
pidnum arms time value
<dbl> <dbl> <chr> <dbl>
1 10056 2 cd40 422
2 10056 2 cd420 477
3 10056 2 cd496 660
4 10059 3 cd40 162
5 10059 3 cd420 218
6 10059 3 cd496 NA
7 10089 3 cd40 326
8 10089 3 cd420 274
9 10089 3 cd496 122
10 10093 3 cd40 287
# … with 6,407 more rows
pivot_longer()
function, create a new dataframe called CD4_long
that shows the CD4_wide
data in the ‘long’ format. To do this, use the following template. Set the grouping column to time
and the new data column to value
.CD4_long <- CD4_wide %>%
pivot_longer(names_to = 'XXX', # New grouping column
values_to = 'XXX', # New data column
cols = c('XXX', 'XXX', 'XXX')) # Names of columns to replicate
Print your CD4_long
dataframe! Do you now see that each row is a specific observation for a patient?
Now use the pivot_wider()
function to convert the long data back into the wide format! To do this, make the first argument time
, and the second argument value
CD4_long %>%
pivot_wider(names_from = 'XXX', # Grouping column
values_from = 'XXX') # Value columnn
trial_A
from trial_act
with the following restrictions:drugs == 1
)cd40
were greater than 250 and less than 400.Add a new column to trial_act
called drugs_char
which is "User"
when drugs == 1, and "Non User"
when drugs == 0.
Create a new dataframe called trial_B
from trial_act
with the following restrictions:
cd40
) and after 96 weeks (cd496
)# Wrangling with dplyr and tidyr ---------------------------
library(tidyverse) # Load tidyverse for dplyr and tidyr
# Load baselers data
baselers <- read_csv("https://raw.githubusercontent.com/therbootcamp/baselers/master/inst/extdata/baselers.txt")
# Perform many dplyr operations in a row
baselers %>%
# Change some names
rename(age_y = age,
swimming = rhine) %>%
# Only include people over 30
filter(age_y > 30) %>%
# Calculate some new columns
mutate(weight_lbs = weight * 2.22,
height_m = height / 100,
BMI = weight / height_m ^ 2,
# Make binary version of sex
sex_bin = case_when(
sex == "male" ~ 0,
sex == "female" ~ 1),
# Show when height is greater than 150
height_lt_150 = case_when(
height < 150 ~ 1,
height >= 150 ~ 0)) %>%
# Sort in ascending order of sex, then
# descending order of age
arrange(sex, desc(age_y)))
# TIPP -------
# In this practical you will do many operations on dataframes. Remember: when using `dplyr`, you can chain
# multiple functions together with the pipe `%>%`. When giving your answers to the questions in this practical,
# see how many operations you can chain with the pipe!
baselers <- read_csv("1_Data/baselers.csv")
# Method 1: Separate operations
baselers <- baselers %>%
rename(Age_y = age) # Change age to Age__y
baselers <- baselers %>%
mutate(food_p = food / income) # calculate food_p
baselers <- baselers %>%
filter(sex == "m") # Only include males
# Method 2: Chain with the pipe!
baselers <- read_csv("1_Data/baselers.csv")
baselers <- baselers %>%
rename(Age_y = age) %>% # Change age to Age__y
mutate(food_p = food / income) %>% # calculate food_p
filter(sex == "m") # Only include males
| File | Rows | Columns |
|---|---|---|
| trial_act.csv | 2139 | 27 |
| trial_act_demo_fake.csv | 2139 | 3 |
The trial_act
data set contains a randomized clinical trial to compare monotherapy with zidovudine or didanosine with combination therapy with zidovudine and didanosine or zidovudine and zalcitabine in adults infected with the human immunodeficiency virus type I whose CD4 T cell counts were between 200 and 500 per cubic millimeter. You can learn more about the trial here)
| File | Rows |
|---|---|
| pidnum | patient’s ID number |
| age | age in years at baseline |
| wtkg | weight in kg at baseline |
| hemo | hemophilia (0=no, 1=yes) |
| homo | homosexual activity (0=no, 1=yes) |
| drugs | history of intravenous drug use (0=no, 1=yes) |
| karnof | Karnofsky score (on a scale of 0-100) |
| oprior | non-zidovudine antiretroviral therapy prior to initiation of study treatment (0=no, 1=yes) |
| z30 | zidovudine use in the 30 days prior to treatment initiation (0=no, 1=yes) |
| zprior | zidovudine use prior to treatment initiation (0=no, 1=yes) |
| preanti | number of days of previously received antiretroviral therapy |
| race | race (0=white, 1=non-white) |
| gender | gender (0=female, 1=male) |
| str2 | antiretroviral history (0=naive, 1=experienced) |
| strat | antiretroviral history stratification (1=’antiretroviral naive’, 2=’> 1 but ≤ 52 weeks of prior antiretroviral therapy’, 3=’> 52 weeks’) |
| symptom | symptomatic indicator (0=asymptomatic, 1=symptomatic) |
| treat | treatment indicator (0=zidovudine only, 1=other therapies) |
| offtrt | indicator of off-treatment before 96±5 weeks (0=no,1=yes) |
| cd40 | CD4 T cell count at baseline |
| cd420 | CD4 T cell count at 20±5 weeks |
| cd496 | CD4 T cell count at 96±5 weeks (=NA if missing) |
| r | missing CD4 T cell count at 96±5 weeks (0=missing, 1=observed) |
| cd80 | CD8 T cell count at baseline |
| cd820 | CD8 T cell count at 20±5 weeks |
| cens | indicator of observing the event in days |
| days | number of days until the first occurrence of: (i) a decline in CD4 T cell count of at least 50 (ii) an event indicating progression to AIDS, or (iii) death. |
| arms | treatment arm (0=zidovudine, 1=zidovudine and didanosine, 2=zidovudine and zalcitabine, 3=didanosine). |
| Package | Installation |
|---|---|
tidyverse |
install.packages("tidyverse") |
| Function | Package | Description |
|---|---|---|
rename() |
dplyr |
Rename columns |
select() |
dplyr |
Select columns based on name or index |
filter() |
dplyr |
Select rows based on some logical criteria |
arrange() |
dplyr |
Sort rows |
mutate() |
dplyr |
Add new columns |
case_when() |
dplyr |
Recode values of a column |
group_by(), summarise() |
dplyr |
Group data and then calculate summary statistics |
left_join() |
dplyr |
Combine multiple data sets using a key column |
pivot_wider() |
tidyr |
Convert long data to wide format - from rows to columns |
pivot_longer() |
tidyr |
Convert wide data to long format - from columns to rows |
dplyr
vignetteSee https://cran.r-project.org/web/packages/dplyr/vignettes/dplyr.html for the full dplyr vignette with lots of wrangling tips and tricks.
from R Studio


California garden party shooting victims all Asian men at a family and friend gathering
Four people have been killed and six more wounded after “unknown suspects” sneaked into a garden party in California and fired into a crowd.
The shooting took place about 6pm local time as people were gathered to watch a football game, Fresno Police Lieutenant Bill Dooley said.
Deputy Chief Michael Reid told the Fresno Bee and local TV stations that a total of 10 people were shot, with three found dead in the backyard. A fourth person died in hospital. Six others are expected to survive and are recovering at the hospital.
All the victims were Asian men ranging from 25 to 35 years old.
Mr Dooley said: “What we do know is that this was a gathering, a family and friend gathering in the backyard. Everyone was watching football this evening when unknown suspects approached the residence, snuck into the backyard and opened fire.”
The victims were taken to Community Regional Medical Centre in critical condition, and some are now stable, the TV stations reported.
About 35 people were at the party when the shooting began.
No one is in custody in connection with the shooting. Police said there was no immediate indication that the victims knew the perpetrators.
Police are going door-to-door in search of surveillance video that might help them track down the suspects. The shooting took place about half a mile from the city’s airport.
Agents from the US Bureau of Alcohol, Tobacco, Firearms and Explosives field office in San Francisco were responding to the shooting, the Bee reported.
It was at least the second fatal gun attack on Sunday in southeast Fresno, the Bee reported. A man in his 20s was shot to death at a home in another part of the city. Police have not said whether the incidents could be connected.
READ MORE
Kim Jong Un vows to build ‘invincible army’ and oversees another military drill
Sunday’s shootings in Fresno also come on the heels of at least two mass shootings in California. On Thursday, a 16-year-old student at a Southern California high school shot and killed two classmates and wounded three other teenagers before shooting himself in the head. He died the next day.
 A fourth son wounded in the shooting was on life support on Sunday, family members said.


×
Admission Days
Year
*
Select Year
Please Select Year
Month
*
Select Month
Please Select Month
Total
*
Please enter Total
Discipline
*
-- Select Discipline --
Please select Discipline


Setting up Tide locally is fairly straight forward and consists of the following steps:
$GOPATH
make
If you run into issues while getting Tide installed, please contact us so we can address it and update the documentation for others.


We periodically send newsletters about breaking local news, upcoming guests, programming announcements and more. Just fill in your zip and email. (You can unsubscribe at any time.)


Priest Gremory:
Curses! I've been unmasked!  My disguise was perfect. Well, question me all you like; my lips area sealed.
What? Dominic sent you? Oh, thank the gods. For a moment I feared the worst!


Basic CRUD using AngularJS
First Name
First Name is required
Last Name
Last Name is required
Department Name
{{x.dep_name}}
Department is required
Save
Search:
ID number
First Name
Last Name
School Department
Actions
{{u.id}}
{{u.firstname}}
{{u.lastname}}
{{u.dep_name}}
EDIT
DELETE


@Beta var sgfDrawer: SgfDrawer
The SgfDrawer used to draw pieces and markup.
Defaults to DefaultSgfDrawer.


Cort X Custom
The new X-Custom is equipped with a double locking II tremolo for tuning stability and smooth tremolo action. The Seymour Duncan SH1('59) & SH4(JB) pickups(H-H) on the X-Custom provide premium humbucker punch and warmth.


There are two parts of the project: 1. Molding From A Negative. 2. Skateboard.
We use Modela MDX-40A to mold our face in a Wax: First, we set up all the softwares,
and adjust the postion of the orgin, and put the wax and start.
Here are pictures of my products.
Download
Back to index


The Negotiator
As Reviewed by James Brundage
Its been how long since I've seen something like this? Well over a year. After all, it was about when I moved here a year and a week or so ago when I last viewed my copy of Silence of the Lambs, and got down to the business of being challenged on a psychological level. Wait, no. I watched Heat a few weeks after that, and THAT is the last movie that even measures up to The Negotiator.
F.Gary Gray (director, "Set it Off") was actually trying to match (in character chemistry and psychological suspense) "Heat", the Michael Mann crime saga in which it was plainly stated that, in the game of cops and robbers, there are no bad guys. In this film, however, there ARE bad guys: just none of them are the main characters. Not to say they're angels… no way. The film dances in the namesake of the director: the Gray.
The plot is simple nothing out of the ordinary that we haven't seen: Clean Cop A (Samuel L. Jackson) is a star man on the force, but is still falsely accused of murder, so he tries to bring in Cop B (Kevin Spacey) to clear his name, while Cops C and D don't believe him, and IAD Cop E (The final performance of J.T. Walsh) is downright psychotic about getting him pinned with the murder. One difference in this one, though: he decides to get nasty, screw having us sit through a length legal movie or the standard cop investigation, and takes four hostages in the IAD department in a federal building. (at last, DEVIATION FROM THE NORM!).
OK, down to the review. I went to see the movie at about 10, and, with movies that late, I sometimes end up just falling into that trance between asleep and awake that happens when you watch Nascar for 6 hours on end. Not this time, not this movie. No way, no how. To put it in a tidbit sentence The Negotiator is an edge of your seat psychological thriller, with razor sharp suspense, intense action, and enough raw thrill to let me quit coffee for a week (and with all the coffee and cappuccinos I drink, that's one huge thrill.)
I said earlier that Armageddon was the best summer movie. I hate to say this more than anything as a critic, and this is twice that I've done this since I've been reviewing here, but this time I'm sure: THIS is THE summer movie of the year. And it's THE crime drama of the year (unless they come out with an LA Confidential sequel or adapt another Elmore Leonard, which somehow I doubt). And it's THE cop movie of the year (unless above conditions are met). And it's THE … well … you get the point. SEE IT.
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


Psalm 96
1 Oh, sing to Yahweh a new song;
sing to Yahweh, all the earth.
2 Sing to Yahweh, bless his name;
announce his salvation day after day.
3 Declare his glory among the nations,
his marvelous deeds among all the nations.
4 For Yahweh is great and is to be praised greatly.
He is to be feared above all other gods.
5 For all the gods of the nations are idols,
but it is Yahweh who made the heavens.
6 Splendor and majesty are in his presence.
Strength and beauty are in his sanctuary.
7 Ascribe to Yahweh, you clans of peoples,
ascribe to Yahweh glory and strength.
8 Ascribe to Yahweh the glory due to his name.
Bring an offering and come into his courts.
9 Bow down to Yahweh in his holy splendor.
Tremble before him, all the earth.
10 Say among the nations, "Yahweh reigns."
The world also is established; it cannot be shaken.
He judges the peoples fairly.
11 Let the heavens be glad, and let the earth rejoice;
let the sea roar and that which fills it shout with joy.
12 Let the fields rejoice and all that is in them.
Then let all the trees in the forest shout for joy
13 before Yahweh, for he is coming.
He is coming to judge the earth.
He will judge the world with righteousness
and the peoples with his faithfulness.


--- layout: post title: CodingDojo date: 2006-09-30 00:00:00 categories: business personal software-development ---
Joh is setting up one of these: "A Coding Dojo is a coding session centered around a programming challenge. The challenge is small in scope and often patterned after pragmatic Dave Thomas' idea of Coding Kata."
Future Platforms is providing a location and resources for the event - wiki here. If you're local and can make it along, do sign up...