Suosikki tekstieditori on Geany. Se on hyvin minimalistinen TÄSSÄ joka tukee suurta kielivalikoimaa – kuori, php, pytonkäärme, C … jne. Siinä on automaattinen viimeistely ja samalla erittäin ketterä. Siltä puuttuu jokin muu miellyttävä tilaisuus, mutta tällä hetkellä se on enemmän kuin tarpeeksi minulle. Aloitin verkkokurssin Python-ohjelmointi на SoftUni – päivittää tietoni ja päivittää sitä, koska en ole seurannut riittävästi pythonin kanssa tapahtuvaa 3. Kurssin luennoitsijat suosittelevat PyCharm IDE: nä pyton-ohjelmoinnille, mutta en pidä siitä, käytän tietysti harjoituksiin Geanyä.

Luentojen aikana tunsin tuskallista 2 puuttuu

  1. python-automaattinen täydennys hengittää toiminnan ja menetelmien dokumentoinnista
  2. ei validointia pep8-standardi

Hyvä asia on, että Geany on riittävän joustava konfiguroidakseen ja sitä voidaan helposti täydentää puuttuvilla.. Joskus lisää python-dokumentaatio IDE: hen:

  • me vedämme seuraava komentosarja jossain PATH-kentässä esimerkiksi / usr / bin ja älä unohda tehdä siitä suoritettavaa
  • muokkaa tiedostoa ~ / .config / geany / filedefs / filetypes.python lisäämällä seuraava rivi asetusosaan konteksti_toiminta_cmd = pydocw% s. Lisää vain binaarin nimi edellisestä vaiheesta. Käynnistämme Geanyn uudelleen, jos se vapautetaan.
  • Meillä on jo asiayhteystoiminto, joka antaa sinulle tietoja toiminnosta. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Pidän tästä lähestymistavasta paljon, koska minua häiritsee hyvin netbeans-lähestymistapa.

Toistaiseksi niin hyvä. Sitten todella haluan saada vahvistuksen kirjoittamalleni koodille – kirjoitanko sen yleisesti hyväksyttyjen standardien mukaisesti vai kirjoitanko jotain rumuutta. Pohjimmiltaan löysin sen uudelleen Oppaat miten asiat tapahtuvat, mutta se on vähän vanhentunut – Geany sisältää kaiken sisäänrakennetun, sinun on vain asennettava pep8-paketti. Debianissa apt-get install pep8 toimii muissa distrossa, sinun on selvitettävä itsellesi, kuinka taika tapahtuu. Rakenna-valikon toinen painike (ainakin minulle) on Lint napsauttamalla sitä, kuinka ruma koodi olet luonut 😀

Näyttökuva 2016-01-11 20-42-21

Tässä on yleiskuvaus siitä, kuinka saada Geanysi toimimaan paremmin Pythonin kanssa samalla, kun se on silti nopea tekemättä prosessoristasi halua vetää luotia.

Sertifiointi ipv6.he.net on päivittäin testejä, jotka antavat 1 ylimääräinen piste kaikkien peruskokeiden läpäisemisen jälkeen. Ne on tehtävä 100 tällaiset testit maksimipistemääräksi 😐 . Itse testit ovat täysin triviaalia

  • traceroute
  • Sinä AAAA
  • SINÄ PTR
  • ping
  • Kuka on

Epämiellyttävin asia on, että testien on oltava ainutlaatuisia, ts. Et voi käyttää yhtä verkkotunnusta kahdesti everything Kaikkien muiden lisäksi ne ovat vähän ärsyttäviä 🙄 – ei haaste vain slapping 5 komennot CLI: ssä ja kopioi / liitä tulos heidän sivustolleen.

Laiskana ja ylläpitäjänä, joka haluaa tehdä elämästään helpompaa, raaputin nopeasti alkeisen bassin, joka tekee likaisen työn minulle.

#!/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

Kuten näette, käsikirjoitus on hulluin yksinkertainen. Lähetät verkkotunnuksen ja validoit sen sitten tarkistaaksesi, onko olemassa IPv6-tietuetta, ja jos niin, suorita päivittäiset testit sille. Tyylikkäin osa – toimia hr joka tulostaa viivan koko näytön leveydeltä, on otettu bash-hakkereita.

A shell script wants your job

Tänään, työskennellessään huomasin, että yksi koneista makaa erittäin huonosti. Menen siihen katsomassa cronin törmäävän helvettiin monissa zombiprosesseissa (karkeasti ympäri 50-60). Ei voinut tappaa heitä kaikkia tapa kaikki joten minun piti tehdä hieman pätevämpi ratkaisu ongelmaan – piirtää alkuaine Bash skripti prosessien löytämiseksi ja hävittämiseksi. 50-PID: itä ei ole helppo kirjoittaa käsin :D. Raapin käsikirjoitusta minuutin ja se on hyvin yksinkertainen, mutta se ansaitsee silti huomion 🙂

Sen juuressa on kuljetin

ps ax | grep -v grep | grep process_name | awk '{print $1}')

Täältä saamme arkin, joka sisältää kaikki prosessin PID: t, jotka meidän on tapettava sulkemalla grepi pois tästä luettelosta. Nyt kun meillä on luettelo, asioista tulee helppoja, kaikki muuttuu yhdeksi. Tässä on lopputulos

#!/bin/bash

PR=$(ps ax | grep -v grep | grep process_name | awk '{print $1}')

for PID in $PR
do
echo "$PID will be killed"
kill -9 $PID
done

Voi olla “viritys” koska nimi otetaan argumentiksi komentosarjan nimen jälkeen ja sitä kutsutaan siten suoritettavaksi binaariksi. Ei ole kuitenkaan kovin hyvää käytäntöä olla niin usein tapauksia. 😀 Mutta se ei koskaan estä meitä olemasta suojassa mistään

Parantaa Zemanta

Днес си играх да оптимизирам една бавна SQL заявка от вида

SELECT * FROM 'table' WHERE `field` LIKE '%word%'

Къде е проблемният момент тукапоследната част ‘%word%и в още по-голяма конкретност знака % преди думата, за която правим. Wildcard символът % ,преди която и да е стойност, директно ни превръща заявката директно в бавна, защото по този начин заявката ни спира да ползва индекси на полето. Решения както винаги има, но не винаги са ясни 😆 Общо взето MySQL си имат решение на тоя проблем с fulltext search индексиране на полето. Как става смяната на полето има много написано в документацията, но набързо ще опиша как се променя горната заявка, защото ще стигнем и до една малка драма накрая. Следка като приложим fulltext на полето горе, заявката трябва да се промени във вида:

SELECT * FROM `table` WHERE MATCH (field) AGAINST ('word')

Така структурата е очевидна и няма нужда от излишна дискусия. Горната заявка ще влезе в сила, ако думата, за която правите заявка е поне 4 символа, по подразбиране е това стойността, ако искате да я модифицирате трябва да укажете стойността, която желаете в my.cnf в частта [mysqld] с декларацията ft_min_word_len=3 или 2, 1 не е добър избор очевидно 😉 . След като смените стойността и рестартирате mysql server-a трябва да направите repair на таблиците си, за да може новото индексиране да влезе в сила. До тук всичко ясно: правя промените, рестартирам, ребилдвам индексите и правя заявката и ми връща 0 реда 😀 Проверявам с

SHOW VARIABLES

Виждам че стойностите, който съм задал са влезли в сила, ребилдвам пак индекситесъщия резултат. 🙄 Неприятно, много неприятно. От тук нататък започна едно голямо ругаене и ровене за ключа за бараката 😀 Който се оказа доста, доста интересен. Като цяло, като започнах да чета документацията за не знам кой път и стигнах до един интересен пасаж

Such a technique works best with large collections (in fact, it was carefully tuned this way). For very small tables, word distribution does not adequately reflect their semantic value, and this model may sometimes produce bizarre results. For example, although the word “MySQL” is present in every row of the articles table shown earlier, a search for the word produces no results

ГРЕДА 😳 Дам табличката ми беше малкавсе пак беше тестова. Наших заявката в една голяма таблица с над 2 000 000 реда и там нещата заспаха. Добре вече е ясен проблемът. За да стане ясно решението, ще спомена накратко, че full text search поддържа 3 разширени режима BOOLEAN , EXPRESSIONS ja NATURAL LANGUAGE като последния работи по подразбиране. За различните режими може да проверите документацията, аз ще обясня с 2-3 думи за BOOLEAN понеже в него е разковничето. Той поддържа логически оператори от типа AND, OR , NOT и прочие и може да се правят разни магии с търсените фрази, да има една, да няма друга и прочие. Поддържа и символа *, който е еквивалент на wildcard символа % 😉 Той е полезен, когато търсената дума е под дължината на ft_min_word_len или за малки таблички ;). Поне при мен на таблица с около 100 реда върши идеална работа. Остана само да видим и завършената заявка:

SELECT * FROM `table` WHERE MATCH (field)
AGAINST ('*word*' IN BOOLEAN MODE)

Тука вече идва момент дали ни работи индексирането с wildcard символаотговорът е не знам. Принципно мисля, че да, защото не е казано друго в документацията, но в документацията очевидно не се казват или показват много неща 😀

Parantaa Zemanta

За единия проект които водя в gitweb ме дразнеше, че няма оцветяване на кода в дървото. Лесен начин как да оцветите синтаксиса в tree частта на gitweb е като инсталирате пакета highlight и добавите следния ред в /etc/gitweb.conf или където ви се намира конфигурационния файл на gitweb

$feature{‘highlight’}{‘default’} = [1];

За Debian пакета го има в пакетната система за другите дистрибуции не съм проверявал.

ps Има и алтернативен вариант като се правят промени по файловете на gitweb ама ми се стори безсмислено като има простичък вариант 🙂