DN42 este un proiect minunat, care vă permite să dezvolte abilităţile dumneavoastră fără târşâitură BGP produs mediu, fără a fi nevoie să aibă dispozitive scumpe cu care să facă laboratorul dumneavoastră de a face simulari cu GNS3. În acelaşi timp nu este un mediu de laborator pură în care nu există nici o probleme de lumea reala. Participe cu 1 nod în cadrul proiectului pentru aproximativ un an. Una dintre problemele în cadrul proiectului este 1:1 cu lumea reală – Când cineva a anunţat prefixe care nu trebuie să declare. Pentru că eu sunt leneş şi nu simt cum ar fi tastarea pe parte timp filtre, Am crezut ca problema cu un simplu bash script care generează un prefix-lista cu numele dn42 şi se toarnă prefixe valide.

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

Lista prediksi valabile în https://ca.dn42.us/reg/Filter.txt de transport principal + mods pic pe partea mea pentru a fi capabil de a genera o listă de prefix. Comenzile sunt executate în vtysh.

Meu editor de text favorit geany. Este foarte minimalist AICI care suportă o gamă largă de limbi – coajă, PHP, piton, Cetc. În timp ce există iad este de autocompletare agil. Îi lipsește ocazional mai plăcut posibil, dar în acest moment pentru mine este mai mult decât suficient. Am început curs online Programare Python на SoftUni – pentru a actualiza cunoștințele lor și pentru a face upgrade pentru că nu sunt după adecvate ce se întâmplă cu piton 3. Lectorii cursului recomandat PyCharm ca IDE pentru programarea Pyton, dar pentru mine departe de gustul meu, folosesc în mod natural Geany pentru exerciții.

In timpul cursurilor dar dureros 2 penuria

  1. Python și completarea automată expirată de documentare la funcții și metode
  2. nici o validare pentru standard de pep8

Vestea bună e că Geany este suficient de flexibil pentru a în funcție de configurație și pot fi ușor suplimentate de la astfel de lipsă. lăsa adăugați documentație piton IDE nostru:

  • trage dvs. de Următorul script undeva în calea noastră ca / ​​usr / bin nu uitați să-l facă executabil
  • edita fișierul ~ / .config / geany / filedefs / filetypes.python în setările parțiale adăugați următoarea linie context_action_cmd = pydocw% s. Dacă nu adaugă doar numele binarkata din etapa anterioară. Repornească Geany dacă se execută.
  • Avem deja un context de acțiune, care va elimina informații despre funcția. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Leach-mi această abordare foarte mult pentru că îmi place mă enervează abordarea NetBeans.

Până aici e bine. Apoi am dorit foarte mult să aibă un cod de validare scrieți – dacă am scrie în conformitate cu standardele general acceptate sau scrie orice urâțenie. În general, am găsit din nou tutorialče modul în care lucrurile se întâmplă, dar este un pic depășit – Geany a tot ceea ce a construit în el însuși trebuie doar să-l instalați pep8 pachet. În Debian apt-get install pep8 funcționează în singur alt distrota pentru a descoperi modul în care magia se întâmplă. În al doilea buton de meniu Build (cel puțin pentru mine) е Lint след кликването му ще откриете колко грозен код сте сътворили 😀

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

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

Pentru a schimba domeniul în WordPress este unele dureri. Recent am avut de a face mai multe lucruri se întâmplă deja sporturi rapid 😀 . Dacă eu pot sumariziram pași sunt 2 – în mod natural, fără a muta fișiere, setări în cazul în care modificările în întregime de găzduire.

1. Schimba URL-ul vechi la noul – Lucruri care fac aici cu banal. Deschideți fișierul wp-config.php și puneți-l în aceste 2 rând

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

După cum înlocuiți http://example.com cu noul.

2. Până în prezent, atât de bine acum site-ul se deschide de lucru url-lea, dar conținutul încărcat, cum ar fi imagini, documente și deci nu sunt vizibile. Aici are deja o provocare urât. Ele trebuie să înlocuiască vechea adresă URL-lea într-o nouă bază de date. Era teribil proces anevoios mai ales pentru incepatori, care nu fac bine cu sintaxa SQL, но вече има доста приятен скрипт searchreplacedb2, ceea ce face incomod pentru tine. Utilizare este banal – încărcați-l în directorul rădăcină în care WordPress pagina și deschideți-l în browser-ta. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия 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. Обаче не е много добра практика да има много такива чести случаи 😀 Но никога не пречи да сме предпазени от всякакви шитни

Consolidată prin Zemanta

Image representing MySQL as depicted in CrunchBase

Ceva timp în urmă am scris despre MySQL Full Text Search 🙂 Azi am avut o foarte interesant experience cu o interogare. În General, interogarea este în căutarea pentru rezultate care lipsesc alt tabel. A selecta o sub osnovne şi selectaţi în partea în care aplicarea. În General, scheletul şi este

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

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

În General, o simpla cerere. Am scris-o pentru 30 SEC de presă ei şi blocat mașina. După o lungă şi cu răbdare de aşteptare pe partea mea sau doar ~ 43 sec . Scuipat lol meu de scor . Pfff Madhouse. Introduceţi în maşină în căutarea CPU în mod normal este încărcată aproape la starea inactiv. Şoc şi uimire. Executaţi interogarea încă din nou acelaşi rezultat. Dracu WTF. Executa interogarea şi explica tot ce am – al doilea câmp este doar secondTextField căutare după text complet Nu index, şi există o tavă modest de aproximativ 35 k linie. Ce să citească – indexul de căutare Full text nu este. Este deja clar problema reală rapid unul

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

Şi lucrurile nap locuri de interogare a luat 0.0005 sec 😀

Fii atent cum ai pus indicii de ele depinde de rata marginală de aplicare.

p. s ansamblul greşită despre situaţia de mai sus nu sunt numai pentru că acesta lipseşte un index, deoarece nu folosind full text search metoda 😀

Consolidată prin Zemanta