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.

Minun suosikki tekstieditori on Geany. Se on hyvin minimalistinen IDE se tukee valtava valikoima kieliä – kuori, php, python, C … jne. Heidän automaattinen täydennys ja samalla pirun hyvin. Hän ei ole yksi ja toinen mukava tilaisuus, mutta tällä hetkellä, minulle se on enemmän kuin tarpeeksi. - Online-kurssi Python-Ohjelmointi tällä SoftUni – virkistävä tietoa, ja päivittää kun en ole seurannut riittävästi, mitä tapahtuu python 3. Kaiuttimet tietenkin suositella PyCharm kuten IDE ohjelmointiin pyton, mutta en ole minun makuuni, tietenkin, käytän Geany liikunta.

Luennon aikana, tunsi tuskallista 2 pula

  1. python-automaattinen täydennys-ja korostat dokumentaatio, toimintoja ja menetelmiä
  2. sinun ei koskaan pep8 standardi

Se, että Geany on varsin joustava kuin kokoonpano ja voidaan helposti täydentää kuin puuttuu sellainen. Katsotaanpa lisää python dokumentointi meidän IDE:

  • dyble se seuraava komentosarja jossain meidän POLKU, esimerkiksi /usr/bin, ja älä unohda tehdä se suoritettavan
  • muokkaa tiedostoa ~/.config/geany/filedefs/tiedostotyypit.python, kuten asetukset, lisää seuraavat rivit context_action_cmd = pydocw %s. Jos on vain lisätä nimen Bearcat edellisessä vaiheessa. ReWire Geany, jos olet töissä.
  • Meillä on jo yhteydessä toimintaa, jonka avulla voit saada tietoa toiminto. Olen lisännyt pikakuvakkeen valitsemani koska en näe mitään toimintoja. Leach, pidän tätä lähestymistapaa hyvin paljon, koska se on erittäin ärsyttävää minulle netbeans lähestymistapa.

No täällä. Sitten minä toivotan en koskaan koodi, että minä kirjoitan – jos kirjoitat sen mukaan Yleisesti hyväksyttyjä standardeja, tai kirjoittaa mitään gattii. Yleensä, löysin taas tutorialon kun asioita tapahtuu, mutta se on hieman vanhentunut – Geany on rakennettu itse, tarvitsee vain asentaa pep8 paketti. Debianin apt-get install pep8 ei toimi muissa destrot itse täytyy oppia, miten taika tapahtuu. Build-valikon toista-painiketta (ainakin minulla on) ei nukkaa, kun klikkaamalla voit löytää hänet kuinka ruma koodi luotu 😀

Kuvakaappaus 2016-01-11 20-42-21

Tämä on periaatteessa miten Geany toimivat paremmin python ja samaan aikaan, edelleen olla nopea ajo haluat vetää luoti CPU.

Verkkotunnus on siirtynyt WordPress on joitakin kipu. Viime aikoina olen saattanut tehdä useita näistä jo ja asiat tapahtuvat nopeasti urheilu 😀 . Jos en voi comarizona vaiheet 2 – tietenkin, ei siirtää tiedostoja, jos asetukset muuttaa kokonaan hosting.

1. Vaihda vanha URL-osoite uusi – täällä kaikki on triviaali. Avata wp-config.php tiedosto ja lisää seuraava 2 jotta

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

Kuten samestate http://example.com uusi.

2. Täällä on jo hyvä, sivustosi avaa url-om työtä, mutta cecinato sisältöä, kuten valokuvia, välineitä ja ovat näin ollen ole näkyvissä. Nyt täytyy brutto häiriöitä. Sinun täytyy korvata vanhat url uusia levyjä tietokantaan. Se oli hirveän vaikea prosessi, varsinkin aloitteleville käyttäjille, ole hyvä SQL-syntaksi, но вече има доста приятен скрипт searchreplacedb2, joka tekee kaikesta hankalaa. Sen käyttö on triviaali – lataa se teidän root hakemistoon, jossa wordpress on sivu ja avata sitä kautta selaimen-ja. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия wp-config.php и след това ще ви пита за новото и старото url. След последната стъпка ще се наложи да поизчакате при мен отнемаше средно 40сек -50сек.

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

A shell script wants your job

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

Parannettu Zemanta

Image representing MySQL as depicted in CrunchBase

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

Parannettu Zemanta