פלאנט תוכנה חופשית בישראל (Planet FOSS-IL)

27 ינואר, 2015

Oz Nahum

Farewell PyCharm! Going VIM again

A few months ago we migrated from PyDev to PyCharm. After a 3 months time where I lead the migration from PyDev to PyCharm and SVN to GIT, I am back again to work with VIM. Here are my thoughts about PyCharm. ... continue reading...

27 ינואר, 2015 08:49 PM

26 ינואר, 2015

Shlomi Noach

Reading RBR binary logs with pt-query-digest

For purposes of auditing anything that goes on our servers we're looking to parse the binary logs of all servers (masters), as with "Anemomaster". With Row Based Replication this is problematic since pt-query-digest does not support parsing RBR binary logs (true for 2.2.12, latest at this time).

I've written a simple script that translates RBR logs to SBR-like logs, with a little bit of cheating. My interest is that pt-query-digest is able to capture and count the queries, nothing else. By doing some minimal text manipulation on the binary log I'm able to now feed it to pt-query-digest which seems to be happy.

The script of course does not parse the binary log directly; furthermore, it requires the binary log to be extracted via:

mysqlbinlog --verbose --base64-output=DECODE-ROWS your-mysql-binlog-filemame.000001

The above adds the interpretation of the RBR entires in the form of (unconventional) statements, commented, and strips out the cryptic RBR text. All that is left is to do a little manipulation on entry headers and uncomment the interpreted queries.

The script can be found in my gist repositories. Current version is as follows:

#!/usr/bin/python
#
# Convert a Row-Based-Replication binary log to Statement-Based-Replication format, cheating a little.
# This script exists since Percona Toolkit's pt-query-digest cannot digest RBR format. The script
# generates enough for it to work with.
# Expecting standard input
# Expected input is the output of "mysqlbinlog --verbose --base64-output=DECODE-ROWS <binlog_file_name>"
# For example:
# $ mysqlbinlog --verbose --base64-output=DECODE-ROWS mysql-bin.000006 | python binlog-rbr-to-sbr.py | pt-query-digest --type=binlog --order-by Query_time:cnt --group-by fingerprint
#

import fileinput

def convert_rbr_to_pseudo_sbr():
    inside_rbr_statement = False
    for line in fileinput.input():
        line = line.strip()
        if line.startswith("#") and "end_log_pos" in line:
            for rbr_token in ["Update_rows:", "Write_rows:", "Delete_rows:", "Rows_query:", "Table_map:",]:
                if rbr_token in line:
                    line = "%s%s" % (line.split(rbr_token)[0], "Query\tthread_id=1\texec_time=0\terror_code=0")
        if line.startswith("### "):
            inside_rbr_statement = True
            # The "### " commented rows are the pseudo-statement interpreted by mysqlbinlog's "--verbose",
            # and which we will feed into pt-query-digest
            line = line.split(" ", 1)[1].strip()
        else:
            if inside_rbr_statement:
                print("/*!*/;")
            inside_rbr_statement = False
        print(line) 

convert_rbr_to_pseudo_sbr()

 

 

 

 

 

26 ינואר, 2015 03:50 PM

Rabin Yasharzadeh

Speed up a MySQL restore from a dump file

This is a small snippet I found to speed up importing MySQL dumps, it’s is almost as fast as coping the DB files directly.

Pre INSERT

Put the commands at the top of the dump file, e.g pre.sql,

SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, AUTOCOMMIT = 0;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS = 0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;

 Post INSERT

Put these statements at the end of the dump file, e.g post.sql,

SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET AUTOCOMMIT = @OLD_AUTOCOMMIT;

Example

cat <(cat pre.sql) <(bzcat mydb_backup.sql.bz2) <(cat post.sql) | mysql

 

26 ינואר, 2015 02:55 PM

24 ינואר, 2015

Gabor Szabo

2014 in Numbers

For the full article visit 2014 in Numbers

24 ינואר, 2015 09:45 PM

Diego Iastrubni

שידרוג אל Lollipop – מפתיע לטובה – חלק תשיעי בסדרה

(בניגוד לפוסטים קודמים בסדרה, כעת אני מדבר על נקסוס 4 ולא Galaxy S1, תתגרלו לזה…)

אז יש באג ב-Cyanogenmod שגורם לזה שאין קול בזמן שיחה. שחר נתקל בזה, וזה מתועד כאן. הפתרון שמוצע שם הוא לבטל שירות של אנדרויד. זה עובד, ובהחלט יש קול. אבל… נוצרה בעייה חדשה. אצלי המכשיר נכבה אחרי 4 שעות המתנה. בדקתי את זה כמה ימים – וכן, הסוללה נגמרת במהירות כזאת. זה אומר שהרום לא שמיש כלל. ואני צריך "טלפון", אז חייבים להחליף רום.

ראיתי שיש nightly builds של CyanogenMod אבל בפורומים מתלוננים על בעיות ילדות. החלטתי להיות אמיץ ולהתקין את הרום המקורי של אימאבא-שמוגל-גוגל. עשיתי את הניסוי הזה כאשר 5.0.0 יצא, ולא הייתי מרוצה. כיום אני מריץ את 5.0.1 ומרוצה בצורה מוזרה. מאוד.

  1. המכשיר מחזיק בהמתנה יומיים. כן, משהו כמו 40 שעות (סוללה חדשה… עלתה 150 ש"ח…). יותר טוב מהיום בו קניתי את המכשיר (עוד מידע כאן).
  2. העיצוב מחריד. שטוח מדי. יותר מדי צבעוני. נראה כאילו ילד זרק צבעים על קיר בצורה אקראית. אני ממש מתחבר אל holo יותר מה-Matrtial design. המסך הוא דו מימדי … אז לנסות להוציא ממנו תלת מימד… לא נראה לי. אהבתי את זה ש-Holo הבין שהוא במדיה דו מימדית ולא התפשר.
  3. ברום החדש אין גלריית תמונות עצמאית. יש אחת שקשורה אל גוגל פלוס, אז צריך להתקין אחת צד שלישי. אני התקנתי את זאת  Gallery KK – Gallery ICS, ושילמתי למפתח 5 ש"ח כדי שלא יהיו לי פרסומות. אם תימצא תוכנה חופשית – אני אחליף את התוכנה שוב.
  4. השעון המעורר נשמע חלש מדי, שימו לב לזה.
  5. המעבר אל Art מורגש. כמו כן, הקטינו את הזמן של הרבה אנימציות (פסיכולוגיה עוזרת במדעי המחשב…). המכשיר מרגיש ממש מהיר עכשיו.
  6. המעבר אל Art מצוין למפתחים!!!!!11 בגרסאות קודמות של אנדרויד לדבג תוכנה step by step היה כואב. מעבר בין שורות ב-Android Studio היה לוקח שלוש שניות. כיום ב-Lollipop מה שמאט זה ה-UI של ה-IDE. טוב שיש לי מחשב חזק… עכשיו אפשר לכתוב תוכנות דפוקות ל-Desktop… (אני קורא לזה התקדמות אחורה).
  7. בהגדרות של הסוללה נוסף גרף שיודע להציג מתי הסוללה תיגמר ומתי ההטענה שלה תסתיים. ראיתי את זה בתוכנות צד שלישי. זה פיצ'ר שקשה לתאר כמה הוא חשוב.
  8. יש המון תוכנות bundeled של גוגל. החלטתי להפסיק איתן (אי אפשר להסיר כי הן ב-System partition). דוגמאות: Google Plus, News Stand, Games, Music, Keep. אני מזכיר שאין תוכנת גלריה, והתקנתי אחת צד שלישי. אני אשמח להצעות נוספות בקשר לגלריה.

מה חסר לי:

  1. privacy manager. למעשה Firewall אל אנשי קשר, הודעות ומיקום.
  2. root – אני בטוח שאפשר לקבל פה root בכוח, אבל זה לא מרגיש לי נכון. אני אשבר ואעשה את זה בקרוב בכל זאת.
  3. Bootloader שיודע לעשות גיבויים. אני צריך לכתוב פוסט פה על גיבויים וזה יהיה ברור למי שלא מבין על מה אני מדבר.
  4. ברום הרגיל של אנדרויד אין תמיכה ב-adb דרך הרשת. לפחות לא ללא root.

הטקסט המלא

24 ינואר, 2015 09:00 PM