Skip to content

Praca s ipythonom (sk)

Tomi Belan edited this page Feb 12, 2015 · 3 revisions

Ipython poskytuje užitočný REPL, kde sa dá príkazmi ovládať AIS aplikácia a hneď vidno, čo to spraví. Ipython notebooky sú kríženci medzi normálnym príkazovým riadkom a skriptami -- príkazy sa dajú písať po jednom podľa aktuálnej situácie, ale keď treba, celý program sa dá spustiť odznova.

Ako nainštalovať a spustiť ipython

pip install ipython[all]
ipython notebook

Čo napísať do nového notebooku

from aisikl.app import Application, assert_ops
from fladgejt.login import create_client
from console import settings
client = create_client(settings.servers[0], dict(type='cosignpassword', username='priezvisko47', password='heslo'))

To spustíme (Shift+Enter) a dostaneme nový client, na ktorom môžeme volať fladgejt metódy. Ak testujeme aplikáciu, ktorú už fladgejt pozná, vyrobíme ju s app = client._open_blablabla_app(...). Ak je to nová aplikácia, ako Context použijeme client.context:

url = '/ais/servlets/WebUIServlet?...'
app, ops = Application.open(client.context, url)
app.awaited_open_main_dialog(ops)

Čo ak chceme iný server

Zmeníme settings.servers[0] na iné číslo. Alebo tam priamo napíšeme vhodný dict(...), v rovnakom formáte ako sú v default_settings.py, ak nechceme importovať setttings alebo chceme úplne vlastný server.

Čo ak nechceme písať heslo priamo do notebooku

Mohli by sme ho napríklad uložiť do súboru .heslo a potom použiť password=open('.heslo').read().strip().

Alebo pred spustením ipython notebook spustiť read -s nbheslo; export nbheslo, a v notebooku napísať import os a password=os.environ['nbheslo'].

Alebo sa prihlásiť cez cosign cookie, aj keď je to trochu nepraktické: client = create_client(settings.servers[0], dict(type='cosigncookie', ais_cookie='hodnota cosign-filter-ais2.uniba.sk', rest_cookie='hodnota cosign-filter-votr-api.uniba.sk'))

Ako spustiť celý notebook odznova

Pomalé riešenie: stlačíme "Kernel -> Restart", potvrdíme že naozaj, stlačíme "Cell -> Run All".

Trochu rýchlejšie riešenie: stlačíme 0 0 enter, stlačíme "Cell -> Run All".

Ešte rýchlejšie riešenie: cez ipython nbextensions. (Otestované s ipython 2.2.0.)

Otvor $HOME/.ipython/nbextensions/startover.js a napíš tam toto:

(function () {


var new_shortcuts = {
  '9': {
    help: 'restart and run all (press twice)',
    help_index: 'hc',
    count: 2,
    handler: function (event) {
      IPython.notebook.session.restart_kernel();
      $([IPython.events]).one("status_started.Kernel", function () {
        IPython.notebook.execute_all_cells();
      });
      return false;
    }
  }
};

IPython.keyboard_manager.command_shortcuts.add_shortcuts(new_shortcuts);


})();

Otvor $HOME/.ipython/profile_default/static/custom/custom.js a na spodok pridaj toto:

require(["base/js/events"], function (events) {
$([IPython.events]).on("app_initialized.NotebookApp", function () {
    IPython.load_extensions('startover');
});
});

(Podľa stránky https://github.com/ipython-contrib/IPython-notebook-extensions/wiki#general-installation-instruction)

Potom stačí stlačiť 9 9 a celý notebook sa vykoná odznova.

Clone this wiki locally