DN42 adalah projek indah yang membolehkan anda untuk membangunkan kemahiran anda tanpa mengikis keadaan produk BGP, tanpa anda perlu mempunyai peranti yang mahal untuk menjadikan makmal anda untuk melakukan simulasi dengan GNS3. Pada masa yang sama adalah tidak tulen makmal persekitaran di mana terdapat tiada masalah dunia sebenar. Mengambil bahagian dengan 1 nod dalam projek untuk kira-kira setahun. Salah satu masalah dalam projek ini adalah 1:1 dengan alam nyata. – Bilakah seseorang mengumumkan awalan yang tidak perlu mengisytiharkan. Kerana saya malas dan tidak merasa seperti menaip di tangan masa penapis, Saya fikir masalah dengan skrip mudah bash yang menjana senarai awalan dengan nama dn42 dan tuangkan awalan sah.

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

Senarai sah prediksi ke https://Ca.dn42.US/reg/Filter.txt dari penghantar yang utama + arena sedikit di pihak saya mampu untuk menjana senarai awalan. Arahan tersebut akan dilaksanakan di vtysh.

editor teks kegemaran saya Geany. Ia adalah sangat minimalis SINI yang menyokong pelbagai jenis bahasa – shell, php, ular sawa, C … dan lain-lain. Ada auto-lengkap manakala neraka adalah tangkas. Ia tidak mempunyai sekali-sekala yang menyenangkan yang boleh tetapi pada masa ini bagi saya adalah lebih daripada cukup. Saya mula kursus dalam talian Python Programming на SoftUni – untuk menyegarkan pengetahuan mereka dan untuk menaik taraf kerana saya tidak selepas mencukupi apa yang berlaku dengan ular sawa 3. Pensyarah kursus ini disyorkan PyCharm sebagai IDE untuk pengaturcaraan pyton, tetapi bagi saya jauh dari suka saya, secara semula jadi menggunakan Geany untuk latihan.

Semasa kuliah menyakitkan merasakan 2 kekurangan

  1. python auto-lengkap dan hembusan dari dokumentasi dengan fungsi dan kaedah
  2. tiada pengesahan untuk standard pep8

Berita baik adalah bahawa Geany adalah fleksibel cukup untuk oleh konfigurasi dan dengan mudah boleh ditambah oleh sekurang hilang seperti. biarlah menambah dokumentasi python untuk IDE kami:

  • menarik anda Skrip berikut suatu tempat di PATH kami sebagai / usr / bin lupa untuk membuat ia boleh laku
  • mengedit fail ~ / .config / Geany / filedefs / filetypes.python dalam tetapan bahagian menambah baris berikut context_action_cmd = pydocw% s. Jika terdapat hanya menambah nama binarkata dari langkah sebelumnya. Mulakan semula Geany jika berjalan.
  • Kami sudah mempunyai konteks tindakan yang akan mengeluarkan maklumat mengenai fungsi. Аз си добавих shortcut за да ми е по удобно като не ми е ясно някоя функционалност. Meluluhkan saya pendekatan ini sangat banyak kerana saya suka menyakitkan hati saya pendekatan NetBeans.

Setakat ini begitu baik. Kemudian saya benar-benar mahu mempunyai kod pengesahan anda menulis – sama ada saya menulis mengikut piawaian yang diterima umum atau menulis apa-apa keburukan. Secara umum saya ditemui lagi tutorialče bagaimana perkara yang berlaku tetapi ia adalah agak ketinggalan zaman – Geany mempunyai segala-galanya yang dibina ke dalam dirinya hanya perlu memasangnya pep8 pakej. Dalam Debian apt-get install pep8 bekerja di distrota lain semata-mata untuk mengetahui bagaimana keajaiban berlaku. Dalam butang menu Membina kedua (sekurang-kurangnya kepada saya) е Lint след кликването му ще откриете колко грозен код сте сътворили 😀

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

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

Untuk menukar domain anda dalam WordPress adalah sakit. Baru-baru ini saya terpaksa melakukan beberapa perkara sudah berlaku sukan cepat 😀 . Jika saya boleh sumariziram langkah-langkah yang 2 – secara semula jadi tanpa fail bergerak, tetapan jika perubahan sepenuhnya hosting.

1. Menukar URL lama kepada yang baru – Perkara yang saya di sini dengan remeh. Buka fail wp-config.php anda dan letakkan di dalam ini 2 berturut-turut


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

Sebagai menggantikan http://example.com dengan yang baru anda.

2. sekarang tapak setakat ini begitu baik membuka kerja url-th tetapi kandungan yang dimuat naik seperti gambar, dokumen dan sebagainya tidak dapat dilihat. Di sini ia sudah mempunyai cabaran jahat. Mereka mesti menggantikan berusia url-ke-dalam pangkalan data yang baru. Ia adalah satu proses yang betul-betul menyusahkan terutamanya untuk pemula, yang tidak berbuat baik dengan SQL syntax, но вече има доста приятен скрипт searchreplacedb2, yang menjadikannya tidak selesa untuk anda. Penggunaan adalah remeh – upload ke direktori akar mana wordpress halaman anda dan membukanya dalam pelayar anda. След това следвате стъпките като първо ще ви пита за потребителско име и парола който е взел от вашия 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. Обаче не е много добра практика да има много такива чести случаи 😀 Но никога не пречи да сме предпазени от всякакви шитни

Dipertingkatkan oleh Zemanta

Image representing MySQL as depicted in CrunchBase

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

Dipertingkatkan oleh Zemanta