Skip to content
Lukáš Rod edited this page Dec 25, 2022 · 20 revisions

Užitečné příkazy

npm/yarn/pipenv

npm yarn pipenv
npm outdated yarn outdated pipenv update --outdated
npm install/uninstall/update [package | package@version], -D yarn add/remove/upgrade [package | package@version], --dev, yarn upgrade-interactive [--latest] pipenv install/uninstall/update [ | pkg], --dev přepínač
npm install yarn install pipenv install, --dev přepínač
--- --- aktivace virt. prostředí: pipenv shell

python

pro simulaci casove prodlevy pozadavku ve view v pythonu lze pouzit:

    def get_queryset(self):
        import time
        time.sleep(10)
        return AttendanceState.objects.all()

HEROKU

  • vytvoření uživatele: heroku run python manage.py createsuperuser --settings=up.settings.production -a uspesnyprvnacek

  • připojení k DB z externí aplikace - je potřeba přidat do URI na konec ?sslmode=require

  • kopírování DB mezi aplikacemi:

    • stagingtesting: heroku pg:copy uspesnyprvnacek-staging::DATABASE_URL DATABASE_URL --confirm uspesnyprvnacek-testing -a uspesnyprvnacek-testing
  • naplánování pravidelné zálohy DB: heroku pg:backups:schedule DATABASE_URL --at "03:00 Europe/Prague" -a uspesnyprvnacek

    • výpis záloh: heroku pg:backups -a uspesnyprvnacek
  • upgrade PostgreSQL: (heroku docs)

    všechny příkazy nutné doplnit -a uspesnyprvnacek-testing/uspesnyprvnacek-staging/uspesnyprvnacek

    1. vytvoření nové DB (trvá několik minut): heroku addons:create heroku-postgresql:hobby-dev
    2. maintanance mode aktivace (aby nikdo nic nezapsal): heroku maintenance:on
    3. přenos dat ze staré (DATABASE_URL) do nové DB (HEROKU_POSTGRESQL_COLOR): heroku pg:copy DATABASE_URL HEROKU_POSTGRESQL_COLOR
    4. nastavení nové DB jako primární: heroku pg:promote HEROKU_POSTGRESQL_COLOR
    5. deaktivace maintanance mode: heroku maintenance:off
    6. smazání staré DB: heroku addons:destroy HEROKU_POSTGRESQL_LAVENDER
  • CZ řazení - viz heroku dokumentace a příslušný soubor s migrací

Fly.io

spusteni nove instance na fly.io

fly launch
nedeployovat
nastavit secrety pres fly secrets set DDD=dd
fly postgres create
nastavit "xxxx-db" nazev
flyctl postgres attach --app <app-name> <postgres-app-name>

naliti sample dat do postgresql

fly ssh console -a uspesnyprvnacek-test-db
cat >> sampledata.psql << EOF
vlozit obsah souboru z repa zde a napsat newline a EOF
psql "psql url vcetne db" -f sampledata.psql

migrace postgresql z heroku na fly.io podporujici zmenu collation

pg_dump --no-acl --no-owner -d "$$$heroku PSQL URL vcetne DB$$$" | sed 's/libc/icu/g' | sed 's/\.utf8//g' | psql -d "$$$fly.io PSQL URL vcetne DB$$$"

dalsi

fly auth logout/login
fly ssh console -a uspesnyprvnacek-test, zdrojaky v /usr/src/up-admin
fly secrets set XY=z / fly secrets unset XY

testování

V případě problémů při UI testování lze pořídit screenshot

import time
filename = time.strftime("%Y%m%d-%H%M%S")
context.browser.save_screenshot(f'{filename}.png')

Ten se pak dá ve vzdáleném terminálu zobrazit díky TerminalImageViewer.

Manuální spuštění produkce na vývojovém prostředí

  1. v souboru .env nastavíme MANUAL_PRODUCTION=True
  2. yarn install (z kořenového adresáře – automaticky se pak provede i build)
  3. přes manage.py spustit:
    1. collectstatic --settings=up.settings.production --noinput
    2. runserver --settings=up.settings.production 0.0.0.0:8000

Poznámka: otevření aplikace na jiném zařízení v síti

Aplikace je připravena také na zobrazení z dalších zařízeních v síti (např. z mobilního telefonu). Obvykle je potřeba provést tyto 2 kroky:

  1. povolit Python a Node.js ve firewallu (např. na chvíli aktivovat interaktivní režim ESETu),
  2. na mobilním zařízení zadat privátní IP adresu počítače, na kterém běží server (zobrazí se např. při spouštění webpack-dev-serveru)

⚠️ Pro připojení je výhodnější použít hostname, pokud se zařízení se serverem např. přepojí z Wi-Fi na Etherent, musela by se samozřejmě měnit v telefonu IP adresa (webpack-dev-server není potřeba restartovat, protože je závislý na hostname).


Import a export dat v PostgreSQL na Windows

⚠️ Je potřeba mít v PATH vloženo C:\Program Files\PostgreSQL\11\bin.

  • export dat aplikace z DB: > pg_dump --column-inserts --table "^admin_*" --data-only --dbname up -U postgres > sample_data.pgsql
  • smazání tabulek s daty aplikace v DB:
    > psql -U postgres --dbname up -c "TRUNCATE TABLE admin_application, admin_course, admin_group, admin_lecture, admin_membership, admin_client, admin_attendancestate, admin_attendance CASCADE;"
  • import dat aplikace do DB: > psql --dbname up -U postgres -f scripts/sql/sample_data.pgsql

Další příkazy

  • zobrazení obsahu zipu: unzip -l frontend.zip
  • skrytí klientů v aplikaci - v js konzoli zavolat toggleGdpr()
  • hledání dead code vulture: vulture --ignore-names step_impl,login_logout,applications,attendancestates,clients,courses,groups,helpers,lectures tests\api_steps\xxx.py
  • smazání cache eslint: rm -rf node_modules/.cache/eslint-loader
  • stresstest - opakovaně spustit ve skriptu: pipenv run python manage.py behave --stage=ui --format=rerun --tags=test