DN42 выдатны праект, які дазволіць вам развіць свае навыкі без BGP-дэструктыўнай асяроддзя прадукту, без неабходнасці мець дарагое абсталяванне, з дапамогай якога зрабіць лабараторыю, каб зрабіць мадэляванне з GNS3. Пакуль не чыста лабараторных умовах, дзе няма рэальных праблем. ўдзельнічаць з 1 вузел праекта на працягу года. Адна з праблем у праекце 1:1 з рэальным светам – калі хто-то абвясціў прэфіксы не абвешчаныя. Таму што я лянівы, і я не рукапісныя фільтры яшчэ раз, Вырашыце праблемы з простай Баш скрыпт, які я генераваць прэфіксаў спіс імёнаў 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

Спіс даступных prediksi ўзяць HTTPS://ca.dn42.us/reg/filter.txt, дзе галоўны канвеер + невялікія мадыфікацыі з майго боку, каб мець магчымасць генерыраваць спіс прэфіксаў. Каманды выконваюцца ў vtysh.

Мой каханы тэкставы рэдактар Geany. Гэта вельмі мінімалісцкі ТУТ які падтрымлівае велізарны дыяпазон моў – абалонка, PHP, пітон, З … і г.д.. Там у той час як аўтазапаўненне пекла спрытны. Ёй не хапае часам прыемна, як гэта магчыма, але ў дадзены момант для мяне больш чым дастаткова. Я пачаў онлайн курс Праграмаванне на Python на SoftUni – каб асвяжыць свае веды і абнавіць, таму што я не пасля адэкватнай, што адбываецца з пітонам 3. Выкладчыкі курсу рэкамендуецца PyCharm у якасці IDE для праграмавання Pyton, але мне далёка ад маёй душы, натуральна выкарыстоўваць Geany для практыкаванняў.

Падчас лекцый хваравіта адчуваецца 2 дэфіцыт

  1. Python аўтазапаўнення-і выдыханае з дакументацыі да функцый і метадам
  2. няма ніякай праверкі для pep8 стандарту

Добрая навіна заключаецца ў тым, што Geany з'яўляецца дастаткова гнуткай, каб па канфігурацыі і могуць быць лёгка дапоўнены ў адсутнасць такіх. дазваляць дадамо python дакументацыя да нашага IDE:

  • падціснуць наступны сцэнар дзесьці ў нашым PATH в / USR / бен не забудзьцеся зрабіць яго выкананым
  • адрэдагаваць файл ~ / .config / Geany / filedefs / filetypes.python у наладах часткі дадайце наступны радок context_action_cmd = pydocw% s. Калі ёсць толькі дадаць назву binarkata з папярэдняга кроку. Перазапуск Geany пры запуску.
  • У нас ужо ёсць кантэкстнае дзеянне, якое будзе выдаляць інфармацыю аб функцыі. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Ліч мне такі падыход вельмі шмат, таму што мне падабаецца раздражняе мяне Netbeans падыход.

Пакуль усё добра. Тады я сапраўды хацеў мець код праверкі вы пішаце – напісаць Ці я ў адпаведнасці з агульнапрынятымі стандартамі або пісаць уродства. Увогуле, я зноў знайшоў tutorialče як рэчы здараюцца, але гэта крыху састарэла – Geany мае ўсе убудаваныя ў сабе трэба толькі ўсталяваць яго pep8 пакет. У Debian APT-атрымаць ўстаноўку pep8 працуе ў адзіночку іншы distrota, каб даведацца, як адбываецца чараўніцтва. У кнопцы другога меню Пабудаваць (па меншай меры мне) е Lint след кликването му ще откриете колко грозен код сте сътворили 😀

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

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

Каб змяніць дамен у WordPress некаторая боль. У апошні час я павінен быў зрабіць некалькі рэчаў, якія ўжо адбываюцца хуткія спартыўныя спаборніцтвы 😀 . Калі я магу sumariziram крокі 2 – натуральна, без перамяшчэння файлаў, Параметры, калі змены цалкам хостынг.

1. Змена старога URL на новы – Рэчы, якія я тут з трывіяльнай. Адкрыйце файл WP-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

Сёння, пакуль я працаваў, я ўбачыў, што адна з машын лагне вельмі жорсткі. Уваход ён выглядае пекла працэсаў зомбі хрон спакаваныя лота (груба каля 50-60). Там не было ніякага спосабу, каб забіць іх усіх killall так што мне трэба зрабіць трохі больш пісьменнага рашэння – Каб ўдарыў бязладзіцай ўдар skriptche, каб знайсці і забіць працэсы. 50-Ціна PID-ня лёгка пісаць ўручную :D. Скрыпт надрапаў на хвіліну, і гэта супер простая, але па-ранейшаму заслугоўвае ўвагі 🙂

На яго базе знаходзіцца канвеер

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

Тут мы атрымліваем ліст з усімі працэсу PID-амі, якія павінны kilnem, як Grep выключыць з гэтага спісу. Цяпер у нас ёсць спіс рэчаў, якія становяцца лёгка круціцца ў адным для. Вось канчатковы вынік

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

можа быць “наладжаны” імя бярэцца ў якасці аргументу пасля імя сцэнарыя і, такім чынам, называецца выкананы файл. Але не вельмі добрая практыка, каб мець шмат такіх частых выпадкаў 😀 але ніколі не prevented're абаронены ад любога shitni

падтрымліваючы Zemanta

Image representing MySQL as depicted in CrunchBase

Некаторы час таму я пісаў пра MySQL паўнатэкставы пошук 🙂 Сёння ў мяне быў вельмі цікавы досвед з адным запытам. У агульным выпадку, калі праграма выконвае пошук вынікаў, якія адчувае недахоп у іншы табліцы. Выбераце адзін асноўны і дапаможны абраны ў WHERE часткі прыкладання. Увогуле і шкілетам

SELECT DISTINCT (
`field`
)
FROM `table1`
WHERE `someID` =44
AND `firsTextField` NOT
IN (

SELECT DISTINCT (
`secondTextField`
)
FROM `table2`
WHERE `otherID` =44
)

Увогуле, элементарна запыце. Я напісаў гэта для 30 сек запусціць яго, і затрымаўся машыну. Пасля таго, як доўга і цярпліва чакаючы з майго боку ці толькі ~ 43 сек . Ён сплюнуў вынік лол . пффф дурдом. Увайсці працэсар машыны Паглядзіце, як правіла, занятыя амаль халастыя абароты. Шок і жах. Выканаць зноў зноў запытаць той жа вынік. ебать WTF. Запусціце прыкладанне і растлумачыць усё, свеціцца – толькі другое поле secondTextField паўнатэкставы пошук без індэкса, і ёсць сціплы паднос каля 35K радкоў. хто чытаў – поўны пошук тэксту не е індэкс. Ужо ясна, праблема хутка адзін

ALTER TABLE `links` ADD INDEX ( `linkUrlID` ) 

І ўсё ўстала на месца заняў запыт 0.0005 сек 😀

Будзьце асцярожныя, як вы кладзеце індэксы іх залежаць ад вашага запыту лімітавай хуткасці.

p.s Като цяло аз съм си крив за горната ситуация не само защото липсва индекс ами защото не ползва full text search метода 😀

падтрымліваючы Zemanta