DN42 unu mirinda projekto kiu donas vin la ŝanco evoluigi iliajn kapablojn sen BGP chupete linio medio, sen la bezono havi multekostaj aparatoj, kiuj povas fari laboratorio por fari la simulado kun GNS3. En la sama tempo ne estas pure laboratorio medio en kiu tie estos problemoj de la reala mondo. Okupita kun 1 nodo en la projekto por pri jaro. Unu el la problemoj en la projekto 1:1 kun la reala mondo – kiam iu vi vokis eskapo sekvencoj kiuj ne havas deklari. Ĉar mi estas maldiligenta kaj mi ne skribas permane ĉiuj la filtriloj denove, реших проблема с елементарен 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.

Miaj preferataj tekstoredaktilo Geany. Ĝi estas tre minimalista TIE kiu subtenas grandegan gamon de lingvoj – ŝelo, php, python, C … ktp. Ekzistas autocompletar dum infero estas lerta. Ĝi malhavas la okazaj agrabla kiel ebla sed nuntempe mi estas pli ol sufiĉa. Mi komencis retan kurson python Programado на SoftUni – refreŝigi sian scion kaj ĝisdatigi ĉar mi estas ne post adekvata kio okazas kun python 3. La prelegantoj de la kurso rekomenditaj PyCharm kiel IDE por programado pyton, sed min for de mia plaĉo, nature uzi Geany por ekzercoj.

Dum la prelegoj dolore sentis 2 necesbezonoj

  1. python autocompletar-kaj odoris de dokumentado por funkcioj kaj metodoj
  2. neniu validumado por pep8 normo

La bona novaĵo estas ke Geany estas fleksebla sufiĉa por per agordo kaj povas facile esti kompletigita per ĉe mankas tia. lasu aldonu python dokumentado al nia IDE:

  • tiri vian La jenaj skripton ie en nia PATH kiel / usr / bin forgesi fari ĝin plenumebla
  • redakti la dosieron ~ / .config / geany / filedefs / filetypes.python delvis agordojn aldonu la sekvan linion context_action_cmd = pydocw% s. Se nur aldoni la nomon de binarkata de la antaŭa paŝo. Rekomenci Geany se kuros.
  • Ni jam havas kuntekstan ago kiu forigos informoj pri la funkcio. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Leach min ĉi alproksimiĝo tre multe ĉar mi ŝatas min enuigas NetBeans alproksimiĝo.

Ĝis nun tiel bona. Tiam mi vere volis havi validación kodo vi skribos – ĉu mi skribas laŭ ĝenerale akceptitaj normoj aŭ skribi ajnan malbeleco. Ĝenerale mi retroviĝis tutorialče kiel aferoj okazas sed estas iom malnoviĝinta – Geany havas ĉiu konstruita en sin nur devas instali ĝin pep8 pako. En Debian apt-get install pep8 laboras en aliaj distrota sole por malkovri kiel la magio okazas. En la dua Konstruu menuobutono (almenaŭ al mi) е Lint след кликването му ще откриете колко грозен код сте сътворили 😀

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

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

Ŝanĝi vian domajnon en WordPress estas iu doloro. Ĵus mi devis fari plurajn aferojn jam okazanta rapida sportoj 😀 . Se mi povas sumariziram paŝoj estas 2 – nature sen movi dosierojn, fiksojn se ŝanĝoj tute retprovizanton.

1. Ŝanĝi la malnovan URL al la nova – Tion mi tie kun bagatela. Malfermu vian wp-config.php dosieron kaj metas ĝin en ĉi tiuj 2 vico

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

Kiel anstataŭi http://example.com kun via nova.

2. Ĝis nun tiel bona nun retejon malfermas url-a laboro sed alŝutita enhavo kiel ekzemple bildoj, dokumentoj kaj do ne videbla. Jen ĝi jam havas aĉan defio. Ili devas anstataŭi la malnovan URL-a en nova datumbazo. Estis terure ĝena procezo speciale por komencantoj, kiu ne faras bonon al SQLa sintakso, но вече има доста приятен скрипт searchreplacedb2, kion faras malkomforta por vi. Uzo estas triviala – alŝutu ĝin al la radika dosierujo kie la wordpress via paĝo kaj malfermu ĝin en la retumilo-via. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия wp-config.php и след това ще ви пита за новото и старото url. След последната стъпка ще се наложи да поизчакате при мен отнемаше средно 40сек -50сек.

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

A shell script wants your job

Hodiaŭ dum mi laboris mi vidis, ke unu el la maŝinoj lagna tre kruela. Ensalutu ĝi aspektas infero de multe cron pakis zombi procezoj (proksimume ĉirkaŭ 50-60). Ne estis vojo por mortigi ilin ĉiujn per killall do mi bezonas fari iom pli klera solvo – Por frapis malordo bash skriptche trovi kaj mortigi procezoj. 50-Tina PID-facile skribi mane :D. Skripto gratis ĝin por minuto kaj estas super simpla sed ankoraŭ meritas atenton 🙂

Ĉe ĝia bazo sidas transportadora

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

Ĉi tie ni ricevas folion kun la tuta PID-s procezo kiu devas kilnem kiel grep ekskludi el tiu listo. Nun ni havas liston de aferoj iĝas facile rotacias en unu por. Jen la fina rezulto

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

Ĉu “agordita” la nomo estas prenita kiel argumento post la skribo nomo kaj tiel estas nomata kiel plenumebla duuma. Tamen, ne estas bona praktiko havi multajn tiajn oftaj kazoj 😀 Sed neniam malhelpi esti protektita de ajna shitni

Plibonigita per Zemanta

Image representing MySQL as depicted in CrunchBase

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

Plibonigita per Zemanta