blob: bf872a933889ddc3b466ac037a2850524e605be2 [file] [log] [blame]
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Command mode vs Edit mode"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"By default we are in COMMAND mode\n",
"<li>Press **ENTER** the edit the current cell\n",
"<li>Press **ESC** to switch back to command mode"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Main command mode shortcuts"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Notebook control:\n",
"- **00** : Restart the notebook\n",
"\n",
"Cells control:\n",
"- **Up/Down arrows** : move up-down on cells\n",
"- **a** : add cell above\n",
"- **b** : add cell below\n",
"- **x** : delete current cell\n",
"\n",
"Editing cells:\n",
"- **Return** : enter edit mode for current cell\n",
"- **Control+/** : Toggle code comment\n",
"- **Ctrl+Shift+-** : Split cell at cursor position\n",
"- **Esc** : return to command mode\n",
"\n",
"Executing cells:\n",
"- **Shift+Return** : execute the content of the current cell\n",
"\n",
"More shortcuts listed under *\"Help\" => \"Keyboard shortcuts\"*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cells editing"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Cells have a type, which can be changed using shortcuts or the dedicated dropdown menu.<br>\n",
"This is an example of text cell, where you can use **Markdown** tags to format your text."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can also highlight chunks of code in almost any langauge"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Example of Bash script:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```shell\n",
"#!/bin/bash\n",
"# A useless script\n",
"for i in $(seq 10); do\n",
" echo Hello World\n",
"done\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Example of C fragment:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"```c\n",
" 29 /*\n",
" 28 * System energy normalization\n",
" 27 * Returns the normalized value, in the range [0..SCHED_LOAD_SCALE],\n",
" 26 * corresponding to the specified energy variation.\n",
" 25 */\n",
" 24 static inline int\n",
" 23 normalize_energy(int energy_diff)\n",
" 22 {\n",
" 21 u32 normalized_nrg;\n",
" 20 int max_delta;\n",
" 19 \n",
" 18 #ifdef CONFIG_SCHED_DEBUG\n",
" 17 /* Check for boundaries */\n",
" 16 max_delta = schedtune_target_nrg.max_power;\n",
" 15 max_delta -= schedtune_target_nrg.min_power;\n",
" 14 WARN_ON(abs(energy_diff) >= max_delta);\n",
" 13 #endif\n",
" 12 \n",
" 11 /* Do scaling using positive numbers to increase the range */\n",
" 10 normalized_nrg = (energy_diff < 0) ? -energy_diff : energy_diff;\n",
" 9 \n",
" 8 /* Scale by energy magnitude */\n",
" 7 normalized_nrg <<= SCHED_LOAD_SHIFT;\n",
" 6 \n",
" 5 /* Normalize on max energy for target platform */\n",
" 4 normalized_nrg = reciprocal_divide(\n",
" 3 normalized_nrg, schedtune_target_nrg.rdiv);\n",
" 2 \n",
" 1 return (energy_diff < 0) ? -normalized_nrg : normalized_nrg;\n",
"5292 }\n",
"```"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Code flow vs execution flow"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Normally cells contains code, which is executed when **Shift+Return** is pressed"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"a = 1\n",
"b = 2"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def my_simple_sum(a, b):\n",
" \"\"\"Simple addition\n",
" :param a: fist number\n",
" :param b: second number\n",
" \"\"\"\n",
" print \"Sum is:\", a+b"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sum is: 102\n"
]
}
],
"source": [
"my_simple_sum(a,b)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Further down in the code we do some changes\n",
"a = 100\n",
"# than we can go back and re-execute just the previous cell"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Access to documentation and Code completion"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sum is: 5\n"
]
}
],
"source": [
"# Use TAB to complete the function name\n",
"# Use SHIFT+Tab after the '(' to access \n",
"my_simple_sum(2,3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Local shell commands execution"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can use a \"!\" at the beginning of a line to execute that command in a local shell"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"/home/derkling/Code/lisa/ipynb/tutorial\r\n"
]
}
],
"source": [
"!pwd"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fri Feb 26 17:52:47 CET 2016\r\n"
]
}
],
"source": [
"!date"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also use variables as parameters by passing them wrapped in \"{}\""
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"15\r\n"
]
}
],
"source": [
"folder = \"../\"\n",
"!ls -la {folder} | wc -l"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Output of a local shell command can also be captured, for example to be post-processed in python"
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": false,
"scrolled": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Available notebooks:\n",
" sched_tune/stune_juno_taskonly_rampL.ipynb\n",
" sched_tune/stune_oak_rampL.ipynb\n",
" sched_tune/stune_juno_rampL.ipynb\n",
" devlib/examples/cgroups.ipynb\n",
" profiling/kernel_functions_profiling.ipynb\n",
" trappy/example_custom_events.ipynb\n",
" sched_dvfs/smoke_test.ipynb\n",
" wlgen/simple_rtapp.ipynb\n",
" wlgen/rtapp_examples.ipynb\n",
" tutorial/01_IPythonNotebooksUsage.ipynb\n",
" tutorial/.ipynb_checkpoints/01_IPythonNotebooksUsage-checkpoint.ipynb\n",
" utils/testenv_example.ipynb\n",
" utils/executor_example.ipynb\n"
]
}
],
"source": [
"output = !find ../../ipynb/ -name \"*.ipynb\"\n",
"\n",
"print \"Available notebooks:\"\n",
"for line in output:\n",
" print line.replace('../../ipynb/', ' ')"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"# How can be used?\n",
"\n",
"## Exporting to scripts\n",
"A notebook can be exported as a standalone script by via the \"File\" => \"Download as\" menu\n",
"\n",
"## Generate reports by exporting to HTML\n",
"By mixing code and markdown formatted comments it's quite easy to generate an HTML report which can be exported via the \"File\" => \"Download As\" menu. PDF format is also supported but it requires some configuration of the backend.\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Useful links:\n",
"\n",
"- Complete tutorial on Notebooks: http://nbviewer.jupyter.org/github/ipython/ipython/blob/3.x/examples/Notebook/Index.ipynb\n",
"- Markdown syntax: http://nbviewer.jupyter.org/github/ipython/ipython/blob/3.x/examples/Notebook/Working%20With%20Markdown%20Cells.ipynb"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}