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.

Mi editor de texto favorito geany. Es muy minimalista AQUÍ que es compatible con una amplia gama de idiomas – cáscara, php, pitón, do … etc.. Hay autocompletar mientras que el infierno es ágil. Carece de la agradable de vez en cuando como sea posible, pero en este momento para mí es más que suficiente. Empecé el curso online La programación Python на SoftUni – para actualizar sus conocimientos y actualizar porque no soy adecuada después de lo que sucede con el pitón 3. Los profesores del curso recomendadas PyCharm como IDE para la programación pyton, pero para mí lejos de mi gusto, utilizar de forma natural Geany para ejercicios.

Durante las conferencias dolorosamente sentidas 2 escasez

  1. Pitón de autocompletar y exhalado de la documentación a las funciones y los métodos
  2. ninguna validación de estándar PEP8

La buena noticia es que Geany es lo suficientemente flexible para por la configuración y puede ser fácilmente complementado por lo que no contengan esas. dejar añadir documentación de Python en nuestro IDE:

  • tirar de su La siguiente secuencia de comandos en algún lugar de nuestro camino como / usr / bin, no se olvide de hacerlo ejecutable
  • editar el archivo ~ / .config / geany / filedefs / filetypes.python en la configuración de componentes Agregar la siguiente línea context_action_cmd = pydocw% s. Si sólo hay añadiendo el nombre de binarkata de la etapa anterior. Geany reiniciar si se ejecuta.
  • Ya tenemos un contexto de acción que eliminará la información acerca de la función. He añadido un acceso directo para mí es más cómodo ya que no entiendo ninguna funcionalidad. Me lixiviar este enfoque mucho porque me gusta me molesta enfoque de NetBeans.

Hasta aquí todo bien. Entonces yo realmente quería tener un código de validación se escribe – si escribo de acuerdo con las normas generalmente aceptadas o escribir cualquier fealdad. En general me encontré de nuevo tutorialče cómo ocurren las cosas, pero es un poco anticuado – Geany ha construido todo en sí mismo sólo es necesario instalarlo PEP8 paquete. En Debian apt-get install PEP8 trabaja en otra distrota solo para descubrir cómo se produce la magia. En el segundo botón de menú Generar (al menos para mí) Pelusa es después del clic descubrirá cómo el código feo que creó 😀

captura de pantalla de 2016-01-11 20-42-21

Se trata básicamente de cómo hacer que su Geany para trabajar bien con Python, y al mismo tiempo seguir siendo sin procesador rápido dan ganas de tirar la bala.

Para cambiar el dominio en WordPress es algo de dolor. Recientemente tuve que hacer algunos de estos y todo sucede rápido deportes 😀 . Si puede sumariziram los pasos son 2 – naturalmente sin necesidad de mover los archivos, Si la configuración se cambia totalmente el hosting.

1. Cambiar la URL antigua con una nueva – Aquí las cosas son triviales. Abra su archivo config.php URwp y pegarlo en la siguiente 2 línea

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

Como sustituir http://ejemplo.com con su nuevo.

2. El sitio es ahora trabajo de url abierta pero el contenido subido como imágenes, documentos y así sucesivamente no es visible. Aquí ahora la interferencia. Es necesario sustituir a la vieja con la nueva url en la base de datos. Fue un proceso terriblemente problemático especialmente para usuarios principiantes, que no hacen bien con la sintaxis de SQL, но вече има доста приятен скрипт searchreplacedb2, eso lo hace incómodo para usted. Su uso es trivial – subir al directorio raíz donde wordpress es su página y abrir en tu navegador-. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия 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. Обаче не е много добра практика да има много такива чести случаи 😀 Но никога не пречи да сме предпазени от всякакви шитни

Mejorado por Zemanta

Image representing MySQL as depicted in CrunchBase

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

Mejorado por Zemanta