Geany better python IDE

0

Любимият ми текстови редактор е Geany. Той е много минималистично IDE което поддържа огромен набор от езициshell, php, python, Cetc. Има си автоматично довършване и същевременно е адски пъргаво. Липсват му някоя и друга приятна възможност но и към момента за мен е повече от напълно достатъчен. Започнах да online курса Python Programming на SoftUniда си освежа познанията и да ги надградя тъй като не съм следил адекватно какво се случва с python 3. Лекторите от курса препоръчват PyCharm като IDE за pyton програмиране, но на мен далеч не ми е по вкуса, естествено си използвам Geany за упражненията.

По време на лекциите болезнено усетих 2 липси

  1. python autocomplete-а издиша от към документация на функции и методи
  2. няма валидация за pep8 стандарта

Хубавото е че Geany е достатъчно гъвкав от към конфигурация и може лесно да бъде допълван от към липсващи такива. Нека да добавим python документация към нашето IDE:

  • дърпаме си следният скрипт някъде в нашият PATH например /usr/bin като не забравяме да го направим изпълним
  • редактираме файла ~/.config/geany/filedefs/filetypes.python като в частта settings добавяме следният ред context_action_cmd=pydocw %s. Ако съществува само добавяме името на бинарката от предишната стъпка. Рестартираме Geany ако е пуснат.
  • Вече имаме context-action който ще ви извади информация за функцията. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Лич мен този подход много ми допада защото много ме дразни netbeans подхода.

До тук добре. След това много ми се прииска да имам валидация на кода който пишадали го пиша според общо приетите стандарти или пиша някакви грозотии. В общи линии намерих отново туториалче как се случват нещата но то е малко остарялоGeany си има всичко вградено в себе си само трябва да му се инсталира pep8 пакета. В Debian apt-get install pep8 върши работа в останалите дистрота сами трябва да откриете как се случва магията. В менюто Build вторият бутон (поне при мен) е Lint след кликването му ще откриете колко грозен код сте сътворили 😀

Screenshot from 2016-01-11 20-42-21

Това е общи линии как да накарате вашият Geany да работи по добре с Python и същевременно да продължи да бъде бърз без да кара процесора ви да иска да си тегли куршума.

ipv6.he.net Daily Tests script

0

Сертифицирането в ipv6.he.net имат дневни тестове които дават по 1 допълнителна точка след като си минал всички основни тестове. Трябва да се направят 100 такива теста за максимален резултат 😐 . Тестовете сами по себе си са напълно тривиални

  • Traceroute
  • DIG AAAA
  • DIG PTR
  • Ping
  • Whois

Най неприятното е че самите тестове трябва да са уникални т.е не може да използваш един домейн двапъти 🙂 Освен всичко друго са и малко досадни 🙄никакво предизвикателство просто плющиш 5 команди в cli-то и copy/paste на резултата в техният сайт.

Като мързелив и администратор който обича да си улеснява живота надрасках на бързо едно елементарно bash-че което да върши черната работа вместо мен

#!/bin/bash

hr() {
  local start=$'\e(0' end=$'\e(B' line='qqqqqqqqqqqqqqqq'
  local cols=${COLUMNS:-$(tput cols)}
  while ((${#line} < cols)); do line+="$line"; done
  printf '%s%s%s\n' "$start" "${line:0:cols}" "$end"
}

if [ -z $1 ]
then
  echo "Append domain afert the script name!!!"
  exit
fi

IP=$(dig $1 AAAA +short)

if [ -z ${IP} ]
then
  echo "$1 dont have valid IPv6 record"
else
  reset
  traceroute6 $1
  hr
  dig $1 AAAA
  hr
  dig -x ${IP}
  hr
  ping6 -c3 ${IP}
  hr 
  whois ${IP}
fi

Както се вижда скрипта е безумно елементарен. Подаваш домейн след което го валидира дали има IPv6 запис и ако има извършва дневните тестове за него. Най готината частфункцията hr която принтира линия по цялата ширина на екрана е взета от bash-hackers.

linux cp mv directory with progress bar

0

Едно от нещата който най много ме дразнят е когато в cli копирам/местя голяма директоря да нямам идея какъв процент от целият размер съм претъркалял. За съжаление cp/mv нямат подобни сили и се налага да прибегнем към алтернативни варианти. Има доста възможности но на мен лично най ми допада използването на rsync вместо pc/mv. В него има всичко вграденозапазване на правата над файлове и директории, прогрес бар както и възможност да изтрива копираните файлове.

В общи линии си направих 2 alias-а които вършат повече от чудна работа:


alias cpi='rsync -a --info=progress2'
alias mvi='rsync -a --info=progress2 --remove-source-files'

Конвертиране на CP1251 към UTF8 в cli

0

От доста време не се занимавам с кодене и рядко ми се налага да чопля някакви извръщания в cli които не са UTF8 енкоднати. Днес ми се наложи да прегледам на бързо едни файлове и като го отворих почти веднага изпитах желание да направя rm -rf на папката където се съдържаха, някой малоумен индивид с половин мозъчна клетка е решил да напише коментарите си на кирилица. За щастие не супер адмиралските сили решават това недоразумение на природата с 1 ред в cli:

iconv -f cp1251 -t utf8 old_shitty_encoded_file -o new_good_encoded_file

Мисля че самите флагове говорят сами за себе си но нека да ги прегледаме на бързо:

  • -o outputfile
  • -t to-encoding
  • -t to-encoding

iconv има и друга много приятна екстра че може да транслитерира (където е възможно) като се зададе -t ASCII//TRANSLIT но за съжаление не работи с кирилица 🙂

Debian Jessie postgresql upgrade

0

Поради някакви (не много ясни ми причини) бях пропуснал да направя ъпгрейд на postgresql демона при дистрибутивният ъпгрейд на един от Debian сървърите ми. Postgresql демона има хубавото свойство да не започва да използва новата си версия (за разлика от Mysql) докато не убедим, че новата е на пълно съвместима със стартаизключително полезно при големи бази данни. Самият процес по обновяване се ограничава до следните 2 стъпки:

  • pg_dropcluster
  • pg_upgradecluster

Преди да издропите клъстера pg демона трябва да е спрян!

pg_dropcluster 9.4 main

Тази команда преминава бързо, след което преминаваме към съществената частсамият ъпгрейд

pg_upgradecluster 9.1 main
Disabling connections to the old cluster during upgrade...
Restarting old cluster with restricted connections...
Creating new cluster 9.4/main ...
config /etc/postgresql/9.4/main
data   /var/lib/postgresql/9.4/main
locale en_US.UTF-8
Flags of /var/lib/postgresql/9.4/main set as -------------e-C
port   5433
Disabling connections to the new cluster during upgrade...
Roles, databases, schemas, ACLs...
Fixing hardcoded library paths for stored procedures...
Upgrading database postgres...
Analyzing database postgres...
Fixing hardcoded library paths for stored procedures...
Upgrading database template1...
Analyzing database template1...
Fixing hardcoded library paths for stored procedures...
Upgrading database xpqt...
Analyzing database xpqt...
Re-enabling connections to the old cluster...
Re-enabling connections to the new cluster...
Copying old configuration files...
Copying old start.conf...
Copying old pg_ctl.conf...
Copying old server.crt...
Copying old server.key...
Stopping target cluster...
Stopping old cluster...
Disabling automatic startup of old cluster...
Configuring old cluster to use a different port (5433)...
Starting target cluster on the original port...
Success. Please check that the upgraded cluster works. If it does,
you can remove the old cluster with

pg_dropcluster 9.1 main

Ако всичко е минло гладко трябва да получите съобщение като горното което ви подканва да разкарате старите данни от pg.

pg_dropcluster 9.1 main

В края на тая тарпана вече можете да стартирате процеса си отново. При мен базите са малки и за съжаление не мога да дам оценка за колко време преминава същественият ъпгрейд.

Go to Top