פענוח לוגים של ספארק בעזרת XSLT
ספארק (Spark) היא תוכנת IM שמבוססת על פרוטוקול XMP שנכתב על ידי קהילת JABBER בהשראתו של ג'רמי מילר .
לקוח ביקש להציג לוגים של עובדים שלו אך שכח להגדיר את השרת לרשום את הלוגים שהוא מעביר, בבדיקה התגלה שללא ידעת העובדים, או ההנהלה, תוכנת הספארק שמרה לוגים מקומיים של השיחות תחת תיקיות היוזר (באקס פי DOCUMENTS AND SETTINGS וב7/VISTA תחת USERS)
נתיב מלא לדוגמא C:\Documents and Settings\david\Spark\user\david@server.dom
מכאן הדרך היתה קלה, אך לא יותר מדי מכיוון שהלקוח ביקש דרך נקיה להציג את הלוגים ולחפש בהם, כאשר הלוגים נרשמו בXML, בצורה בה הפרוטוקול עובד. enters XSLT מכיוון שהלוגים נרשמים בצורה הירככית של טרנסקריפט->הודעה->הודעה היה די קל לסדר אותם בצורה קריאה לעין על ידי שימוש במבנה טבלאות.
הנה דוגמא לקובץ לוג:
את השורה הנוראית הזאת של XML סידרתי היררכית על ידי XML TOOLS של NOTEPAD++ ועכשיו היא נראית ככה:
<messages>
<message>
<to>david@server.dom</to>
<from>zoza@server.dom/Home</from>
<body>what's up man?</body>
<date>2010-01-14 16:48:13.70 GMT+02:00</date>
</message>
<message>
<to>zoza@server.dom</to>
<from>david@server.dom/Spark</from>
<body>Sometimes i feel like somebody's watching me.</body>
<date>2010-01-14 16:49:07.837 GMT+02:00</date>
</message>
</messages>
</transcript>
אמנם לא כזה נורא לקריאה אבל כשזה שיחה של כמה שעות, רצוי לסדר את זה בצורה שגם לעין יהיה נוח.
הנה הXSL שבו השתמשנו בשביל להציג את הלוגים: (Filename: Chatlog.xsl) יש לזכור את השם כי מיד נקרא לו גם מתוך קובץ הלוג
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
lang="en">
<head>
<title>Chatlog</title>
</head>
<body>
<table border="1">
<tr>
<th>Date</th>
<th>From</th>
<th>To</th>
<th>Body</th>
</tr>
<xsl:for -each select="transcript/messages/message">
<tr>
<td><xsl:value -of select="date"></xsl:value></td>
<td><xsl:value -of select="substring-before(from, '@')"></xsl:value></td>
<td><xsl:value -of select="substring-before(to, '@')"></xsl:value></td>
<td><xsl:value -of select="body"></xsl:value></td>
</tr>
</xsl:for>
</table>
</body>
</html>
עכשיו בשביל לסדר את קובץ הXML, נדחוף בשורה הראשונה את הקריאה לXSL, כדלקמן:
ואם עכשיו נפתח את קובץ הXML בדפדפן האהוב עלינו, בהנחה שהקבצים נמצאים באותה תיקיה (הXSL והלוג) תופיע בפנינו טבלה שתתעד את השיחה בצורה נוחה לקריאה!

ייצוא מידע ממסד נתונים מיי אס קיו אל בפורמט מופרד בפסיקים
טיפ נחמד למי שמתעסק המון עם מסדי נתונים
select [fields] from [database] INTO OUTFILE '/tmp/db.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
כמובן שלפני האינטו פייל אתם יכולים לשחק עם הקוורי ולבקש כל מה שמתחשק לכם.
החלק היפה כאן הוא שהמעבר מMYSQL לEXCEL מתקצר באופן מדהים ואפשר לטייב נתונים ממסד נתונים תוך דקות.
כיף
חכה לי נמרוד שפירא
הוידאו קליפ הזה ניצח בתחרות הוידאו קליפים של מובי מתוך 500 מועמדים סך הכל ושישה פיינליסטים מדהימים אחד אחד.
לא יודע מי זה נמרוד שפירא, אבל הוא עשה שם עבודה מדהימה. לייק!
באנגים מינרלים
יצירת מדריך טלפונים למכשירי Snom3XX במרכזיות Asterisk
מערכת הפעלה: לינוקס
הפצה: CENTOS 5.3 – ELASTIX
ממשק ניהול לאסטריסק: FREEPBX
טלפונים בשימוש: SNOM300, SNOM360, אמור לעבוד על כל סנום מסדרת 3XX, יכול להיות שגם על עוד דגמים.
למי שיצא לבנות מרכזיות אסטריסק עם IP-Phones מתוצרת סנום, יודע שהאינטגרציה ביניהם לא מלאה, הפרויז'נינג צולע ולהגדיר באופן אוטומטי מכשירים הופך לפעמים לסיפור מעצבן.
היום התבקשתי להגדיר מדריך טלפונים למכשירי סנום, שימשוך באופן דינאמי את השלוחות המוגדרות במערכת ויציג אותן במכשיר.
מכיוון שהנושא מאוד מורכב וארוך, היום אני אגע אך ורק באיך ליצור את הקובץ XML ומה הצורות הנכונות לקרוא לו מתוך המכשיר, אם אתם מעוניינים לדעת עוד על עבודה של סנומים מול אסטריסק, הרגישו חופשי להשאיר תגובה ואני אשתדל לעזור ולהרחיב.
הדבר הראשון שאתם צריכים לעשות זה לגשת לתיקיה נגישה מהשרת ווב, וליצור שם קובץ PHP. (אם אתם רוצים שהקובץ יהיה דינמי ויתעדכן בכל פעם שמישהו קורא לספריה, אם לא חשוב לכם עידכונים רציפים של המדריך טלפונים אפשר לשים את זה בכל תיקיה ואחר כך להעתיק למקום שנגיש לטלפונים בתצורת XML.)
הסקריפט PHP הבא, יגש למסד הנתונים של האסטריסק (בפרט FREEPBX, אם יש לכם מערכת ניהול עם ממשק משתמש אחרת, בשינוים קלים תוכלו להתאים את זה לעצמכם) וימשוך משם את כל השלוחות, כולל טלפונים, ויהפוך את זה לפורמט XML אשר הסנומים יודעים לקרוא.
הסקריפט (אל תשכחו לעדכן את פרטי מסד הנתונים עם נתוני ההתחברות שלכם):
print "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
print "<snomipphonedirectory>\n";
print "<title>Phone directory</title>\n";
print "<prompt>Prompt</prompt>\n";
require_once('DB.php'); //PEAR must be installed
$db_user = 'user_for_db';
$db_pass = 'pass_for_db';
$db_host = 'hostname_for_db';
$db_name = 'name_of_db';
$db_engine = 'mysql';
$datasource = $db_engine.'://'.$db_user.':'.$db_pass.'@'.$db_host.'/'.$db_name;
/* datasource in in this style:
dbengine://username:password@host/database */
$db = DB::connect($datasource); // attempt connection
// if connection failed show error
// don't worry about this for now, we get to it in the errors section
if(DB::isError($db)) {
die($db->getDebugInfo());
}
$sql='Select extension,name from users where name not like \'%test%\' order by name';
$results = $db->getAll($sql);
foreach($results as $result){
print "<directoryentry>\n\t\t\t<name>" . $result[1]. "</name>\n";
print "\t\t\t<telephone>".$result[0]."</telephone>\n\t\t\t</directoryentry>";
}
print "</snomipphonedirectory>";
?>
אם הסכמת דאטה-בייס של המרכזיה שלכם שונה לגמרי, יש עוד סקריפט פרלי שעובד על הקובץ /etc/asterisk/voicemail.conf ומוציא ממנו את השלוחות לפורמט מדריך הטלפונים של סנום. (שימו לב שבסקריפט הזה אין צורך להכניס סיסמא למסד הנתונים, מה שהופך אותו לקצת יותר בטוח, אך מצד שני, אם תרצו שיתעדכן באופן דינמי, תצטרכו לתת לו הרשאות לרוץ דרך שרת הווב שלכם, מה שהופך את העסק לפחות מאובטח)
open DIR,") {
chomp;
$_ =~ m/^[0-9]{3}/ && do {
($ext,$data) = split(/[ ]+\=\>[ ]+/,$_);
($pw,$name,$email,$other) = split(/,/,$data);
($first,$last)=split(/[ ]+/,$name);
$dir{"$last$first"}=[$first,$last,$ext];
};
}
print "Content-type: text/xml\n\n";
print '< ?xml version="1.0" encoding="UTF-8" ?>
<snomipphonedirectory>
<title>Directory</title>
<prompt>Dial</prompt>
';
for $key (sort keys %dir) {
($first,$last,$ext)=@{$dir{$key}};
print "<directoryentry>
<name>$first $last</name>
<telephone>$ext</telephone>
</directoryentry>
";
}
print '
</snomipphonedirectory>';
עכשיו כל שנותר הוא להגדיר כפתור על הסנום שיפנה לנתיב הוובי של הקובץ (במקרה שרוצים עידכון דינמי של ספרית הטלפון) או נתיב סטאטי על פי הפלט של הסקריפטים המצורפים למעלה.
כרגיל, אם יש לכם שאלות או הצעות, אשמח לענות בתגובות.
איפוס סיסמת ROOT אבודה לMYSQL באובונטו
עוד שטות קטנה שאני נתקל בה המון עם חברים שאיבדו את הסיסמא, או לקוחות ששמו סיסמא כל כך חזקה ולא הצליחו לזכור אותה לאחר מכן.
בעקרון, אני תמיד ממליץ לשים סיסמא חזקה מאוד ליוזר רוט במיסקיול אבל רצוי לזכור סיסמאות
במקרה ונתקעתם בחוץ, ארבעה שלבים פשוטים יעשו לכם את החיים קלים.
קודם כל, נהרוג את הסרביס שרץ כרגע, שימו לב שאם אתם עושים את זה על מכונת פרודקשן אתם יכולים להרוג ילדים של הדאטה בייס וזה אף פעם לא נעים אחר כך להלחם בדברים כאלו, אז שימו לב שאתם מורידים תהליכים שעלולים לכתוב לדאטהבייס במהלך התהליך הזה.
עכשיו נריץ את השרת בהתעלמות מטבלת ההרשאות המובנת
התחברות מקומית למסד הנתונים:
בתוך הדאטהבייס הדביקו את שורת הפקודה הבאה, שימו לב שבמקום MYPASSWORD אתם צריכים לכתוב את הסיסמא החדשה שתרצו ליוזר ROOT.
אפשר עכשיו לעשות ריסטרט לסרביס כרגיל (service mysql restart or /etc/init.d/mysql restart)
מקווה שהסתדרתם, אם יש לכם בעיות, אתם מוזמנים להשאיר תגובה, אשתדל לעזור לכם כפי יכולתי.
מדריך: התקנת וובמין (WEBMIN) על אובונטו
למי שלא מכיר, וובמין הוא פרוייקט קוד מקור פתוח עם ממשק וובי לניהול מערכות לינוקס. בעזרת כל דפדפן תוכלו לנהל חשבונות משתמשים, שרת אפאצ'י, ביינד, שיתוף קבצים ומלא מודולים נוספים שאפשר להוסיף בקלות. וובמין בא למלא חלל לאנשים שלא כל כך מסתדרים עם הCLI ורוצים עוד אפשרות ויזואלית להסתכל על המכונה שלהם.
לאחרונה התבקשתי על ידי אחד מהמשתמשים שלי להתקין על VPS שהוא משתמש בו את הממשק, המכונה מריצה אובונטו וההתקנה לקחה בדיוק שתי שניות (give or take a minute
) אז החלטתי לצרף את הצעדים הקלים להתקנה.
1. קודם כל עלינו למלא דרישות מוקדמות של התוכנה, וובמין חיה ונושמת פרל לכן נצטרך להשלים כל מני ספריות שהוא יצטרך
2. נוריד את הגרסא האחרונה של וובמין (נכון לכתיבת המדריך הזה הגרסא האחרונה היא 1.51, רצוי לבדוק אם השתנה משהו אם התרחקתם בתאריך מתאריך כתיבת המאמר, את רשימת ההורדות הכי עדכנית תוכלו למצוא כאן: http://sourceforge.net/projects/webadmin/files)
3. התקנה של החבילה
אם האובונטו שלכם ילד קטן והוא בוכה שחסרות לו חבילות או איזה דפנדנסי ששכחנו, הפקודה הבאה תסתום עליו את הגולל.
עכשיו אפשר להתחבר למכונה שלכם בפורט 10000 HTTPS.
אני באופן אישי שיניתי את הפורט של הוובמין על המכונה (מטעמים מובנים של סריקות מאסיביות בהתגלות של פרצות)
את זה תוכלו לשנות ב
מדריך: התקנת שרת קאונטר סטרייק סורס על אובונטו
שלום חברים, והיום מדריך קצרצר על התקנת שרת קאונטר סטרייק סורס. את ההתקנה נבצע על הפצת הלינוקס; אובונטו!.
שימו לב שאת ההתקנה הזאת אנו מבצעים בתור מנהל המערכת (ROOT), יש אפשרות לבצע את ההתקנה מקומית על מכונות משותפות, אבל רצוי מאוד לשאול את מי שמספק את המכונה אם זה מותר.
ונתחיל: שלב ראשון, ליצור את התיקיה שממנה השרת ירוץ.
sudo mkdir /srcds
עכשיו ניכנס לתוך התיקיה הזאת (למשתמשים על מכונה משותפת, עליכם ליצור את התיקיה תחת תיקית הבית שלכם.
cd /srcds
מסדרים את ההרשאות לתיקיה.
chmod 755 /srcds
ומורידים את תוכנת עידכון השרת של הלף לייף 2 (כן כן, אתם עדיין במדריך הנכון)
sudo wget http://storefront.steampowered.com/download/hldsupdatetool.bin
בואו נתן לו הרשאות ריצה
chmod +x hldsupdatetool.bin
ועכשיו גם נריץ אותו! (מי היה מאמין) אתם תתבקשו לקרוא את הסכם השימוש, וגם לאשר שאתם מסכימים.
./hldsupdatetool.bin
קובץ ההתקנה סיים. הוא פתח קובץ בשם steam. אפשר למחוק עכשיו את קובץ ההתקנה!
sudo rm hldsupdatetool.bin
יש לבצע עידכון של שרת הסטים
./steam
עכשיו הגענו לחלק הארי של ההתקנה. (אם אתם בחיבור מרוחק עם ניתוקים, מומלץ להריץ את זה ברקע עם & בסוף. או תחת סקרין
./steam -command update -game "Counter-Strike Source" -dir .
ההתקנה אמורה לקחת בסביבות שעה או יותר, תלוי במהירות האינטרנט של השרת שלכם ובמצב הרוח שלו באותו יום, לכו לשתות תה, או משהו פחות מתרומם.
כשתחזרו, תוכלו כבר להריץ את השרת!
הנה פקודה לדוגמא.
./srcds_run -game cstrike -autoupdate +map de_dust
השרת לפי הפקודה הזאת ירוץ למשחק קאונטר סטרייק (סורס) בלי עידכונים אוטומטים ועל המפה de_dust.
בהצלחה, וסליחה על האיחור בכמה שנים.
איך להפוך את VIM לIDE של BASH SCRIPTING
לאחרונה התחלתי להשתמש המון בבאש סקריפטינג, וחלק מהכיף היה למצוא את הפינה הנוחה שלי עם כתיבת סקריפטים (מתישהו אתה מתבגר ולא יכול להשתמש יותר בנאנו). אחד העורכים הטובים ללינוקס ובכלל הוא VIM, יש כאלו שיתווכחו ויגידו EMACS אבל אני לא ממש הולך להכנס לויכוח הזה כאן ועכשיו.
למי שכן מעוניין לכתוב באש סקריפטים עם VIM, הנה תוסף שיעשה לכם את החיים נוחים, אחושרמוטה.
כמה דברים שהתוסף הזה לוים יודע לעשות:
* הוספת הדרים
* הוספת הערות לפונקציות ובפריים
* אינקלודים לסניפלטים
* בדיקת סינטקס!
* גישה מהירה לדוקיומנטציה
* המרת בלוק קוד להערה ולהפך
התקנה של התוסף בשלוש שלבים מהירים
מורידים את הקובץ לתיקיה.
$ wget -O bash-support.zip http://www.vim.org/scripts/download_script.php?src_id=9890
מתקינים את התוסף!
$ cd ~/.vim
$ unzip /usr/src/bash-support.zip
מוסיפים את התוסף לקובץ ההגדרות של וים
filetype plugin on
התוסף מותקן ואתם בדרך לכיף חיים בכתיבת סקריפט באש.
ממליץ לקרוא את דף ההסברים במלואו, יש המון קיצורים שכדאי לכם לשנן או להכין דף רפרנס מהיר.

תגובות אחרונות