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.

Мій улюблений текстовий редактор Geany. Він є мінімальним IDE яка підтримує величезний спектр мов – оболонка, PHP, Python, З … д. Ваш автозаповнення і в той же час так швидкого. Відсутні йому приємний можливості, але в той час для мене, є більш ніж достатнім. Я почав онлайн курс Програмування Python з SoftUni – оновлювати мої знання та зробити їх nadgradâ, тому що я не дотримувався адекватно те, що відбувається з python 3. Звичайно рекомендують ораторів PyCharm як інтегроване середовище для програмування pyton, але я далеко не мій смак, природно користуватися Geany для вправ.

Під час лекцій я відчував, як болісно 2 lipsi

  1. Python автозаповнення-видих до документації функцій і методів
  2. Немає не перевірки для в Стандартний pep8

Добре те, що вона є досить гнучким з Geany, до конфігурації і можна легко додати до відсутні. Дозволь Додати python документації у нашому IDE:

  • тягти ваш такий сценарій Где-то в наш КОНТУРА, наприклад, як/usr/bin не забудьте зробити його виконуваним
  • Редагувати файл ~/.config/geany/filedefs/filetypes.python і в настройки ми додавайте наступні лінія context_action_cmd = pydocw %s. Якщо там тільки додає назву на binarkata з попереднього кроку. Перезавантаження, якщо запустити Geany.
  • Ми вже маємо контексті дію, яка змусить вас витяг інформації про функцію. Я додав ярлик для моїх краще як я не бачу будь-яку функціональність. Ліч мене такий підхід, як тому, що багато чого мене дратує netbeans підхід.

Поки що добре. Потім я хочу, щоб мати перевірки код, який ви пишете – Чи ви написати її відповідно до загальноприйнятих стандартів або писати будь-які диваків. Загалом, я знайшов ще раз tutorialče як речі трапляються, але це трохи застаріла – Geany є все, що побудована у вас є тільки встановити пакунок pep8. В Debian apt-get встановити pep8 працює в інших distrota, щоб дізнатися, як відбувається чарівництво. Другу кнопку в побудувати меню (принаймні мені) є на ворсу після того, як натиснувши ви знайдете його як потворний коду, створеного 😀

Скріншот з 2016-01-11 20-42-21

Це в основному як зробити Geany краще працювати з Python і в той же час, і раніше швидкий процесор, потрібно тягнути куля водіння.

Щоб змінити домен в WordPress є деякі болю. Нещодавно я повинен був зробити декілька з них, і все відбувається швидко спортивних 😀 . Якщо я можу sumariziram кроки 2 – природно, без переміщення файлів, Якщо змінюються настройки повністю хостинг.

1. Змінити старі URL з новою – Ось тривіальні речі. Відкрити URwp-config. php файл і вставте його в наступному 2 лінія

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

Як замінити http://example.com з вашої нової.

2. Сайт в даний час Відкрити URL-адресу роботу, але завантаженого вмісту, наприклад зображень, документи і так далі немає на екрані. Ось тепер втручання. Вам потрібно замінити Старий новий url в базі даних. Це було жахливо клопітно процесу особливо для початківців користувачів, хто не слід добре синтаксис SQL, но вече има доста приятен скрипт searchreplacedb2, яка полегшує дискомфорт для вас. Її використання є тривіальним – завантажити його в кореневу директорію де wordpress є ваші сторінки і відкрити в ваш браузер-. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия 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. Обаче не е много добра практика да има много такива чести случаи 😀 Но никога не пречи да сме предпазени от всякакви шитни

Посилюється Zemanta

Image representing MySQL as depicted in CrunchBase

Преди известно време бях писал за 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 метода 😀

Посилюється Zemanta