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.

Min favorit texteditor är Geany. Han är mycket minimal IDE som stöder ett stort utbud av språk – Shell, php, python, Cetc. Är din bil-komplett och samtidigt är så smidigt. Saknar honom en trevlig möjlighet men på tiden, för mig, är mer än tillräcklig. Jag började onlinekurs Python programmering av SoftUni – att fräscha upp mina kunskaper och göra dem nadgradâ eftersom jag inte har följt tillräckligt vad händer med python 3. Talare rekommenderar naturligtvis PyCharm som IDE för programmering pyton, men jag är långt ifrån min smak, naturligtvis Använd Geany för övningar.

Under föreläsningarna kände jag en smärtsam 2 Lipsi

  1. python-komplettera automatiskt och andas ut i dokumentationen till funktioner och metoder
  2. Det finns ingen validering för den standard pep8

Det är bra är att det är tillräckligt flexibelt för Geany konfiguration och kan enkelt läggas till de saknas. Låt mig Lägg till python dokumentation till vår IDE:

  • Dra din följande skript någonstans i vår väg glömma exempelvis som/usr/bin inte att göra den körbar
  • Redigera den filen ~/.config/geany/filedefs/filetypes.python som i inställningarna vi Lägg till följande rad context_action_cmd = pydocw %s. Om det är bara att lägga namnet på binarkata från föregående steg. Starta om kör Geany.
  • Vi har redan den sammanhang-action som kommer har du drog information om funktionen. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Läcka mig detta synsätt likt eftersom mycket irriterar mig netbeans strategi.

Så långt är allt bra. Då vill jag ha en validering av den kod som du skriver – Om du skriver det enligt allmänt accepterade standarder eller skriva någon Weirdos. I allmänhet hittade jag igen tutorialče hur saker hända men den har lite inaktuell – Geany har allt byggdes du behöver bara installera det paketet pep8. I Debians apt-get installera pep8 fungerar i andra distrota att upptäcka hur magin händer. Den andra knappen i Build-menyn (åtminstone för mig) е Lint след кликването му ще откриете колко грозен код сте сътворили 😀

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

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

Att ändra domänen i WordPress är lite smärta. Nyligen jag var tvungen att göra några av dessa och allt händer snabba sporter 😀 . Om jag kan sumariziram är stegen 2 – naturligt utan att flytta filerna, Om inställningarna ändras helt hosting.

1. Ändra den gamla adressen med en ny – Här är saker trivial. Öppna din URwp-config.php-fil och klistra in den i följande 2 linjen

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

Som ersätta http://example.com med din nya.

2. Platsen är nu öppna url's arbete men det uppladdat innehållet såsom bilder, dokument och så vidare är inte synlig. Här nu störningen. Du behöver ersätta gammalt med den nya-url i databasen. Det var en fruktansvärt besvärlig process speciellt för nybörjare användare, som inte gör bra med SQL-syntax, но вече има доста приятен скрипт searchreplacedb2, som gör det obehagligt för dig. Dess användning är trivialt – Ladda upp den till rotkatalogen där wordpress är din sida och öppna den i din webbläsare-. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия wp-config.php и след това ще ви пита за новото и старото url. След последната стъпка ще се наложи да поизчакате при мен отнемаше средно 40сек -50сек.

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

A shell script wants your job

Днес докато работех видях че една от машините лагна много жестоко. Влизам в нея гледам един cron наблъскал адски много зомби процеси (грубо около 50-60). Нямаше как да ги убия всички с killall затова се наложи да направя малко по грамотно решение на проблемада драсна едно елементарно våldsamt slag скриптче което да намери и убие процесите. 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. Обаче не е много добра практика да има много такива чести случаи 😀 Но никога не пречи да сме предпазени от всякакви шитни

Förstärkt av Zemanta

Image representing MySQL as depicted in CrunchBase

Преди известно време бях писал за MySQL fullständig textsökning 🙂 Днес имах много интересно преживяване с една заявка. В общи линии заявката търси за резултати който липсват друга таблица. Един основне 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 метода 😀

Förstärkt av Zemanta