data-science-ipython-notebooks/commands/misc.ipynb

589 lines
16 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This notebook was prepared by [Donne Martin](http://donnemartin.com). Source and license info is on [GitHub](https://github.com/donnemartin/data-science-ipython-notebooks)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Misc Commands\n",
"\n",
"* Anaconda\n",
"* IPython Notebook\n",
"* Git\n",
"* Ruby\n",
"* Jekyll\n",
"* Pelican\n",
"* Django"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"anaconda\">Anaconda</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Anaconda](https://store.continuum.io/cshop/anaconda/) is a scientific python distribution containing Python, NumPy, SciPy, Pandas, IPython, Matplotlib, Numba, Blaze, Bokeh, and other great Python data analysis tools."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# See Anaconda installed packages\n",
"!conda list\n",
"\n",
"# List environments\n",
"!conda info -e\n",
"\n",
"# Create Python 3 environment\n",
"!conda create -n py3k python=3 anaconda\n",
"\n",
"# Activate Python 3 environment\n",
"!source activate py3k\n",
"\n",
"# Deactivate Python 3 environment\n",
"!source deactivate\n",
"\n",
"# Update Anaconda\n",
"!conda update conda\n",
"\n",
"# Update a package with Anaconda\n",
"!conda update ipython\n",
"\n",
"# Update a package\n",
"!conda update scipy\n",
"\n",
"# Update all packages\n",
"!conda update all\n",
"\n",
"# Install specific version of a package\n",
"!conda install scipy=0.12.0\n",
"\n",
"# Cleanup: Conda can accumulate a lot of disk space\n",
"# because it doesnt remove old unused packages\n",
"!conda clean -p\n",
"\n",
"# Cleanup tarballs which are kept for caching purposes\n",
"!conda clean -t"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"ipython-notebook\">IPython Notebook</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[IPython Notebook](http://ipython.org/notebook.html) is a \"web-based interactive computational environment where you can combine code execution, text, mathematics, plots and rich media into a single document.\""
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Start IPython Notebook\n",
"ipython notebook\n",
"\n",
"# Start IPython Notebook with built-in mode to work cleanly \n",
"# with matplotlib figures\n",
"ipython notebook --pylab inline\n",
"\n",
"# Start IPython Notebook with a profile\n",
"ipython notebook --profile=dark-bg\n",
"\n",
"# Load the contents of a file\n",
"%load dir/file.py\n",
"\n",
"# Time execution of a Python statement or expression\n",
"%timeit\n",
"%%time\n",
"\n",
"# Activate the interactive debugger\n",
"%debug\n",
"\n",
"# Write the contents of the cell to a file\n",
"%writefile\n",
"\n",
"# Run a cell via a shell command\n",
"%%script\n",
"\n",
"# Run cells with bash in a subprocess\n",
"# This is a shortcut for %%script bash\n",
"%%bash\n",
"\n",
"# Run cells with python2 in a subprocess\n",
"%%python2\n",
"\n",
"# Run cells with python3 in a subprocess\n",
"%%python3\n",
"\n",
"# Convert a notebook to a basic HTML file \n",
"!ipython nbconvert --to html --template basic file.ipynb "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"| Command | Description |\n",
"|-----------|------------------------------------------|\n",
"| ? | Intro and overview of IPython's features |\n",
"| %quickref | Quick reference |\n",
"| help | Python help |\n",
"| object? | Object details, also use object?? |"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Apply css styling based on a css file:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"from IPython.core.display import HTML\n",
"\n",
"def css_styling():\n",
" styles = open(\"styles/custom.css\", \"r\").read()\n",
" return HTML(styles)\n",
"css_styling()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"git\">Git</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Git](http://git-scm.com/) is a distributed revision control system."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Configure git\n",
"!git config --global user.name 'First Last'\n",
"!git config --global user.email 'name@domain.com'\n",
"!git init\n",
"\n",
"# View status and log\n",
"!git status\n",
"!git log\n",
"\n",
"# Add or remove from staging area\n",
"!git add [target]\n",
"!git reset [target file or commit]\n",
"!git reset --hard origin/master\n",
"\n",
"# Automatically stage tracked files, \n",
"# including deleting the previously tracked files\n",
"# Does not add untracked files\n",
"!git add -u\n",
"\n",
"# Delete files and stage them\n",
"!git rm [target]\n",
"\n",
"# Commit\n",
"!git commit -m “Add commit message here”\n",
"\n",
"# Add new origin\n",
"!git remote add origin https://github.com/donnemartin/ipython-data-notebooks.git\n",
"\n",
"# Set to new origin\n",
"!git remote set-url origin https://github.com/donnemartin/pydatasnippets.git\n",
" \n",
"# Push to master, -u saves config so you can just do \"git push\" afterwards\n",
"!git push -u origin master\n",
"!git push\n",
"\n",
"# Diff files\n",
"!git diff HEAD\n",
"!git diff --staged\n",
"!git diff --cached\n",
"\n",
"# Show log message of commit and diff\n",
"!git show $COMMIT\n",
"\n",
"# Undo a file that has not been added\n",
"!git checkout — [target]\n",
"\n",
"# Revert a commit\n",
"!git revert\n",
"\n",
"# Undo a push and leave local repo intact\n",
"!git push -f origin HEAD^:master\n",
"\n",
"# Undo commit but leave files and index\n",
"!git reset --soft HEAD~1\n",
"\n",
"# Amend commit message of most recent change\n",
"!git commit --amend\n",
"!git push --force [branch]\n",
"\n",
"# Take the dirty state of your working directory\n",
"# and save it on a stack of unfinished changes\n",
"!git stash\n",
"\n",
"# Get list of stashes\n",
"!git stash list\n",
"\n",
"# Apply the top stash, re-modifying the \n",
"# uncommitted files when the stash was saved\n",
"!git stash apply\n",
"\n",
"# Apply a stash at the specified index\n",
"!git stash apply stash@{1}\n",
"\n",
"# Create a branch\n",
"!git branch [branch]\n",
"\n",
"# Check branches\n",
"!git branch\n",
"\n",
"# Switch branches\n",
"!git checkout [branch]\n",
"\n",
"# Merge branch to master\n",
"!git merge [branch]\n",
"\n",
"# Delete branch\n",
"!git branch -d [branch]\n",
"\n",
"# Clone\n",
"!git clone git@github.com:repo folder-name\n",
"!git clone https://donnemartin@bitbucket.org/donnemartin/tutorial.git\n",
" \n",
"# Update a local repository with changes from a remote repository\n",
"# (pull down from master)\n",
"!git pull origin master\n",
"\n",
"# Configuring a remote for a fork\n",
"!git remote add upstream [target]\n",
"\n",
"# Set remote upstream\n",
"git branch --set-upstream-to origin/branch\n",
"\n",
"# Check remotes\n",
"!git remote -v\n",
"\n",
"# Syncing a fork\n",
"!git fetch upstream\n",
"!git checkout master\n",
"!git merge upstream/master\n",
"\n",
"# Create a file containing a patch\n",
"# git format-patch are like normal patch files, but they also carry information \n",
"# about the git commit that created the patch: the author, the date, and the \n",
"# commit log message are all there at the top of the patch.\n",
"!git format-patch origin/master\n",
"\n",
"# Clean up .git folder:\n",
"!git repack -a -d --depth=250 --window=250\n",
"\n",
"# GitHub tutorial:\n",
"http://try.github.io/levels/1/challenges/9\n",
"\n",
"# BitBucket Setup\n",
"!cd /path/to/my/repo\n",
"!git init\n",
"!git remote add origin https://donnemartin@bitbucket.org/donnemartin/repo.git\n",
"!git push -u origin --all # pushes up the repo and its refs for the first time\n",
"!git push -u origin --tags # pushes up any tags\n",
"\n",
"# Open Hatch missions\n",
"!git clone https://openhatch.org/git-mission-data/git/dmartin git_missions"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"ruby\">Ruby</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Ruby](https://www.ruby-lang.org/en/) is used to interact with the AWS command line and for Jekyll, a blog framework that can be hosted on GitHub Pages."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# Update Ruby\n",
"!rvm get stable\n",
"\n",
"# Reload Ruby (or open a new terminal)\n",
"!rvm reload\n",
"\n",
"# List all known RVM installable rubies\n",
"!rvm list known\n",
"\n",
"# List all installed Ruby versions\n",
"!rvm list\n",
"\n",
"# Install a specific Ruby version\n",
"!rvm install 2.1.5\n",
"\n",
"# Set Ruby version\n",
"!rvm --default ruby-1.8.7\n",
"!rvm --default ruby-2.1.5\n",
"\n",
"# Check Ruby version\n",
"!ruby -v"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"jekyll\">Jekyll</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Jekyll](http://jekyllrb.com/) is a blog framework that can be hosted on GitHub Pages.\n",
"\n",
"In addition to donnemartin.com, Ive started to build up its mirror site donnemartin.github.io to try out Jekyll. So far I love that I can use my existing developer tools to generate content (SublimeText, Terminal, and GitHub).\n",
"\n",
"Here are other features I like about Jekyll:\n",
"\n",
"* Converts Markdown to produce fast, static pages\n",
"* Simple to get started, no backend or manual updates\n",
"* Hosted on GitHub Pages\n",
"* Open source on GitHub"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Many Jekyll themes require a Ruby version of 2 and above. However, the AWS CLI requires Ruby 1.8.7. Run the proper version of Ruby for Jekyll:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"!rvm --default ruby-2.1.5"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Build and run the localy Jekyll server:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# => The current folder will be generated into ./_site\n",
"!bundle exec jekyll build\n",
"\n",
"# => A development server will run at http://localhost:4000/\n",
"# Auto-regeneration: enabled. Use `--no-watch` to disable.\n",
"!bundle exec jekyll serve"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<h2 id=\"pelican\">Pelican</h2>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I've switched my personal website [donnemartin.com](http://donnemartin.com/) to run off Pelican, a python-based alternative to Jekyll. Previous iterations ran off Wordpress and Jekyll.\n",
"\n",
"Setup [reference](http://nafiulis.me/making-a-static-blog-with-pelican.html)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Install\n",
"!pip install pelican\n",
"!pip install markdown\n",
"!pip install ghp-import\n",
"\n",
"# Quick retup\n",
"!pelican-quickstart\n",
"\n",
"# Run server\n",
"!make devserver\n",
"\n",
"# Stop server\n",
"!make stopserver\n",
"\n",
"# Run ghp-import on output folder\n",
"# Review https://pypi.python.org/pypi/ghp-import\n",
"# There's a \"Big Fat Warning\" section\n",
"!ghp-import output\n",
"\n",
"# Update gh-pages (if using a project page)\n",
"!git push origin gh-pages\n",
"\n",
"# Update gh-pages (if using a user or org page)\n",
"!git merge gh-pages master"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Django"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[Django](https://www.djangoproject.com) is a high-level Python Web framework that encourages rapid development and clean, pragmatic design. It can be useful to share reports/analyses and for blogging. Lighter-weight alternatives include [Pyramid](https://github.com/Pylons/pyramid), [Flask](https://github.com/mitsuhiko/flask), [Tornado](https://github.com/tornadoweb/tornado), and [Bottle](https://github.com/bottlepy/bottle)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Check version of Django\n",
"!python -c \"import django; print(django.get_version())\"\n",
"\n",
"# Create and setup a project\n",
"!django-admin startproject mysite\n",
"\n",
"# Sync db\n",
"!python manage.py syncdb\n",
"\n",
"# The migrate command looks at the INSTALLED_APPS setting and \n",
"# creates any necessary database tables according to the database \n",
"# settings in your mysite/settings.py file and the database \n",
"# migrations shipped with the app\n",
"!python manage.py migrate\n",
"\n",
"# Run the dev server\n",
"!python manage.py runserver\n",
"1python manage.py runserver 8080\n",
"!python manage.py runserver 0.0.0.0:8000\n",
"\n",
"# Create app\n",
"!python manage.py startapp [app_label]\n",
"\n",
"# Run tests\n",
"python manage.py test [app_label]\n",
"\n",
"# Tell Django that youve made some changes to your models \n",
"# and that youd like the changes to be stored as a migration.\n",
"!python manage.py makemigrations [app_label]\n",
"\n",
"# Take migration names and returns their SQL\n",
"!python manage.py sqlmigrate [app_label] [migration_number]\n",
"\n",
"# Checks for any problems in your project without making \n",
"# migrations or touching the database.\n",
"!python manage.py check\n",
"\n",
"# Create a user who can login to the admin site\n",
"!python manage.py createsuperuser\n",
"\n",
"# Locate Django source files\n",
"!python -c \"\n",
"import sys\n",
"sys.path = sys.path[1:]\n",
"import django\n",
"print(django.__path__)\""
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}