DN42 е един прекрасен проект който ви дава възможност да развивате вашите BGP умения без да чупите продуктова среда, без да ви се налага да имате скъпи устройства с които да си правите лаборатория да си правите симулации с GNS3. Същевременно да не е чисто лабораторна среда при която няма проблеми от реалният свят. Участвам с 1 node в проекта от около година. Един от проблемите в проекта е 1:1 с реалният святкогато някой ти обяви префикси които не трябва да обявява. Понеже съм мързелив и не ми се пише на ръка филтри все път, реших проблема с елементарен bash скрипт които ми генерира prefix-list с име dn42 и в него наливам валидните префикси.

#!/bin/bash</pre>
vtysh -c 'conf t' -c "no ip prefix-list dn42"; #drop old prefix list

while read pl
do
vtysh -c 'conf t' -c "$pl"; #insert prefix list row by row
done < <(curl -s https://ca.dn42.us/reg/filter.txt | grep -e ^[0-9] | awk '{ print "ip prefix-list dn42 seq " $1 " " $2 " " $3 " ge " $4 " le " $5}' | sed "s_/\([0-9]\+\) ge \1_/\1_g;s_/\([0-9]\+\) le \1_/\1_g");
vtysh -c 'wr' #write new prefix list

Списъка с валидните предикси се взема https://ca.dn42.us/reg/filter.txt от където и основният конвейр + малко модификации от моя страна за да може да се генерира префикс листа. Командите се изпълняват през vtysh.

Moj najljubši urejevalnik besedila je Geany. To je zelo minimalističen IDE podpira velik razpon jezikov – lupine, PHP, Python, C … itd. Imajo svoje funkcije za samodokončanje in hkrati krvavo dobro. Mu manjka eno in drugo lepo priložnost, vendar v tem trenutku, za mene, to je več kot dovolj. Sem online tečaj Python Programiranje na SoftUni – za osvežitev znanja in posodobi kot sem že ne sledi ustrezno, kaj se zgodi z python 3. Zvočniki seveda priporočam PyCharm kot je IDE za programiranje pyton, ampak jaz ne moj okus, seveda, uporabljam Geany za vadbo.

V času predavanja, čutil boleče 2 pomanjkanje

  1. python funkcije za samodokončanje in označite iz dokumentacije, funkcije in metode
  2. nikoli ne bo za pep8 standard

Dejstvo, da Geany je zelo prilagodljivi kot konfiguracija in da se lahko dopolni kot manjka takih. Poglejmo dodaj python dokumentacija na naši IDE:

  • dyble je naslednji skript nekje na naši POTI, na primer /usr/bin, in ne pozabite, da bi bilo izvedljivo
  • uredite datoteko ~/.config/geany/filedefs/vrste datotek.python, kot v nastavitve, dodajte naslednje vrstice context_action_cmd = pydocw %s. Če je le dodati ime Bearcat iz prejšnjega koraka. ReWire Geany, če delate.
  • Imamo že okviru akcije, ki vam bo omogočilo, da bi dobili informacije o funkciji. Jaz added a drobčjiv kruh v moji raje kot ne vidite vse funkcionalnosti. Leach, všeč mi je ta pristop je zelo veliko, saj je zelo nadležno, da me netbeans pristop.

No tukaj. Potem bom želim si, da nikoli ne kodo, ki sem napisati – če ste napisali, je v skladu s Splošno sprejetimi standardi, ali napišete vse gattii. V Splošnem sem našel spet tutorialon kot stvari se dogajajo, ampak to je malo zastarel – Geany je vse to vgrajeno v sam, samo treba namestiti paket pep8. V Debian apt-get namestite pep8 ne dela v drugih destrot sami potrebujejo, da se naučijo, kako čarobno zgodi. Na Zidava meni, drugi gumb (vsaj imam) je gladko, ko kliknete boste našli mu kako grdo kodo, ki ste jo ustvarili 😀

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

To je v bistvu kako narediti vaš Geany, da deluje bolje z Python in ob istem času, še vedno hitro vožnjo CPU hočeš potegniti bullet.

Domene, ki je vključen v WordPress je nekaj bolečine. V zadnjem času sem morda morali narediti nekaj od teh je že in stvari se dogajajo hitro šport 😀 . Če sem lahko comarizona koraki 2 – seveda, ne premakniti datoteke, če nastavitve, da popolnoma spremenite gostovanje.

1. Spremembe stari URL z novimi – tukaj je vse, kar je trivialno. Odprite vaša wp-config.php datoteko in vstavite naslednje 2 naročilo

define('WP_HOME','http://example.com');
define('WP_SITEURL','http://example.com');

Kot samestate http://example.com z novo.

2. Tu je že dobro, je vaše spletno mesto odpre url-om delo, ampak cecinato vsebin, kot so fotografije, instrumenti in zato niso vidne. Zdaj je treba, da bruto motnje. Morate zamenjati stari url z nove zgoščenke v zbirki podatkov. To je bilo strašno težko procesa, še posebej za začetnike uporabnike, ne zelo dobro z SQL sintaksa, но вече има доста приятен скрипт searchreplacedb2, ki naredi vse, kar je neprijetno za vas. Njena uporaba je trivialno – prenesite na vaš korenski imenik, kjer je wordpress strani in da jo odprete prek brskalnika in ga. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия wp-config.php и след това ще ви пита за новото и старото url. След последната стъпка ще се наложи да поизчакате при мен отнемаше средно 40сек -50сек.

Това е във общи линии нищо трудно или супер сложно.

A shell script wants your job

Днес докато работех видях че една от машините лагна много жестоко. Влизам в нея гледам един cron наблъскал адски много зомби процеси (грубо около 50-60). Нямаше как да ги убия всички с killall затова се наложи да направя малко по грамотно решение на проблемада драсна едно елементарно bash скриптче което да намери и убие процесите. 50-тина PID-а не се пишат лесно на ръка :D. Скрипта го надрасках за минута и е свръх елементарен но все пак заслужава внимание 🙂

В основата му седи конвейера

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

Тука получаваме лист с всички PID-ове на процеса който трябва да килнем като изключваме grep от този списък. Вече като имаме списъка нещата стават лесни всичко се завърта в един for. Ето го и крайния резултат

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

Може да сетунинговакато името се взима като аргумент след името на скрипта и по този начин се вика като изпълнимо binary. Обаче не е много добра практика да има много такива чести случаи 😀 Но никога не пречи да сме предпазени от всякакви шитни

Okrepljeno z Zemanta

Image representing MySQL as depicted in CrunchBase

Преди известно време бях писал за MySQL polno besedilo Išči 🙂 Днес имах много интересно преживяване с една заявка. В общи линии заявката търси за резултати който липсват друга таблица. Един основне Select и един sub select в WHERE частта на заявката. В общи линии скелета и е

SELECT DISTINCT (
`field`
)
FROM `table1`
WHERE `someID` =44
AND `firsTextField` NOT
IN (

SELECT DISTINCT (
`secondTextField`
)
FROM `table2`
WHERE `otherID` =44
)

В общи линии елементарна заявка. Написах я за 30 сек пускам я и зацикли машината. След дълго и търпеливо чакане от моя страна или по точно ~43 сек . Ми се изплю резултат lol . Пффф лудница. Влизам в машината гледам процесора е нормално натоварен почти в idle състояние. Шок и ужас. Пускам пак заявката пак същия резултат. Fuck WTF. Пускам explain на заявката и всичко лъснавторото поле secondTextField е само full text search без index, а там табличката е скромна от около 35к реда. Кой да четеfull text search не е индекс. Вече е ясен проблема набързо едно

ALTER TABLE `links` ADD INDEX ( `linkUrlID` ) 

И нещата си дойдоха на местата Query took 0.0005 sec 😀

Внимавайте как си слагате индексите от тях ви зависи маргинално скоростта на заявката.

p.s Като цяло аз съм си крив за горната ситуация не само защото липсва индекс ами защото не ползва full text search метода 😀

Okrepljeno z Zemanta