טיפים למצביעים (או אלה שעוד לא הצביעו)

ב־יום שלישי, 10 בפברואר 2009, מאת ארתיום; פורסם תחת: תכנה ומחשבים, פוליטי; ‏4 תגובות

אחד הדברים המעצבנים בבחירות זה לדעת לאיפה אתה הולך. החלפתם כתובת אבל לא עדכנתם אותה? עכשיו לכו תחפשו את הקלפי שלהם. מוכר?

יש פתרון מאוד פשוט! גידי גוב ;), או ליתר דיוק http://www.gov.il/‎‏. נכנסים לאתר, מקלידים מספר הזהות, לוחצים על חפש... יש כתובת, מספר קלפי ואפילו כפתור להדפסה. עובד בפיירפוקס, אפיפני וגם קונקי! כך שגם למשתמשי לינוקס אין תרוצים לא להצביע.

עכשיו בעיה שניה, מתלבטים במי לבחר. יש לכם שני פתרונות

פתרון ראשון שהציע שחר שמש. בגדול נחמד ופשוט, אבל יש לו שני חסרונות עיקריים:

  • אתה מודע מה קיבלת, לכן, אתה יכול להיות מושפע מהתוצאות ולכן, התפלגות לא תהיה בדיוק אחידה.
  • אתה מסתמך על הוגנות של שחר שמש שבנה את האתר (לא שאני לא סומך עליו, אבל בכל זאת) והוגנות של מחולל מספרים אקראיים. (שחר, אולי תפרסם קוד מקור?) בנוסף, מה קורה אם יש באג?

טוב, ספרתי את ההצעה של שחר לחבר שלי פבל והוא העלה את הרעיון שאין לו את שני החסרונות האלה. מה שכן, הוא דורש יותר מאמץ.

במילים אחרות... אין תירוצים, כולם מבציעים!

לקמפל על Linux להריץ על Windows.

ב־יום ראשון, 8 בפברואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים; ‏13 תגובות

לעתים, אנחנו נרשים לתמוך בפלטפורמה הלא ידידותית הזו. הבעיה העיקרית שלפעמים זה די מעצבן לוותר על הסביבה הנוחה שלך להיכנס ל"חלונות" רק כדי לבנות את כל מה שצריך.

הכל התחיל מזה שרציתי לבדוק --- עד כמה זה מסובך לבנות cppcms על mingw וכמה מאמץ צריך להשקיע להסבה. הסיפור היה נראה די מסובך --- איזה פונקציות המערכת שאני משתמש בהן לא נתמכות בחלונות ואילו כן. אז היה ברור שצריך לנסות לבנות את כל היישום. בהתחלה זה היה נראה די מסובך להתחיל לבנות את כל הסביבה במכונת windows וירטואלית חסרת כלי פיתוח בסיסיים.

אבל autotools נותן תמיכה מצוינת ב־cross compilation עבור Windows. כל מה שצריך זה להתקין mingw ולהריץ:

 ./configure --host=i586-mingw32msvc --prefix=/place/to/install

זהו פחות או יותר! הוא יבנה לך ספריות סטטיות ודינמיות, יבנה dllים איפה שצריך, יתקין. לעשה, ייתן לך סביבה שקופה לבניית יישומים תחת mingw. כמובן מדובר ב־debian/ubuntu ב־RH שם הקומפיילר יכול להיות קצת שונה.

ובכן, קמפלתי cgicc --- (היו כמה בעיות מינוריות, אבל הסתדרתי), הורדתי pthreads עבור windows. הכל היה די מבטיח.

לאחר מכן, בא הסיוט --- לבנות boost. הם לא משתמשים ב־autotools וגם bjam לא ממש תומך בצורה סבירה ב־cross compiling... אחרי הרבה מאמץ... ויתרתי ובניתי אותו על חלונות.

אחרי שבניתי boost הרצתי קונפיגורציה עבור cppcms והכל עבד מצוין --- הצלחתי למפות בצורה יפה את כל הפונקציות הלא נתמכות: בהן gettimeofday, readdir_r, clock_realtime, pthreads_sigmask ועוד ועוד ועוד (זה מעבר לדברים שידעתי שלא ייתמכו כמו fork ו־dlopen)...

מסקנות:

  1. ככל שעובר הזמן אני מבין יותר ויותר שבמציאות אין תחליף ל־autotools הישן והטוב ולא כל־כך ידידותי. לכל הילדים כמו bjam, cmake, scons ואחרים יש עוד דרך מאוד ארוכה.
  2. צריך לעבור ל־autotools גם עבור biditex ולחסוך לעצמי מאמץ של תחזוקה של שני קובצי makefile עבור שתי פלטפורמות שונות.
  3. לא נראה לי ש־CppCMS יתמוך ב־windows בקרוב.
  4. אם qt4 היה עובד עם autotools זה היה חוסך לי המון זמן, אתחולי Virtual Box רבים כדי לשחרר גרסאות של יישום קטן עבור חלונות/לינוקס.

אתר המראה עבור תיעוד של CppCMS.

ב־יום שלישי, 3 בפברואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, פיתוח, תכנה ומחשבים, CppCMS; ‏4 תגובות

לאחרונה התחלתי לקבל תלונות רבות על זמינות נמוכה של אתר הזה, בפרט התיעוד הוא היה כמעט ולא זמין מחוץ לישראל (כאשר בארץ הוא טס).

המצב מאוד מדאיג, כי כל מי שרוצה להתשמש בפרויקט מחוץ לארץ, עלול פשוט להישבר בגלל המתנה ארוכה לתיעוד, שלא לדבר על העובדה שזה "לא־ראוי" עבור מערכת שאמורה להבטיח ביצועים גובהים.

לכן, עד שאסדר את הבעיות מול ספקית האינטרנט שלי (012), הכנתי תסריט קטן שיוצר עותק ה־wiki בעזרת wget ומעלה אותו לאתר Sourceforge בעזרת rsync. הסקריפט הזה ירוץ כל 6 שעות ויבטיח עדכניות סבירה של אתר המראה; ולמעשה יבטיח זמינות טובה של תיעוד מחוץ לארץ.

לכן, אבקש, כל מי שרוצה לקשר לפרויקט הזה שיפנה ל־cppcms.sourceforge.net‏ במקום הויקי הנוכחי ב־art-blog.no-ip.info.

פיג'ו 206... מה דעתכם?

ב־יום שני, 2 בפברואר 2009, מאת ארתיום; פורסם תחת: כללי, הכל מלבד מחשבים; ‏2 תגובות

שלום,

אני מחפש פיג'ו 206 של שנות 2000-2002 ידנית.

מה דעתם על האוטו? עד כמה היא אמינה? עד כמה יקרה בתחזוקה? האם מומלצת?

כרגע יש לי 205 שנת 94 שאני די מרוצה ממני מבחינת האמינות, שאלה עד כמה 206 המשיכה את המסורת?

הערה: ראיתי רכבים שלרוב רצו 150,000.

תודה!

מדוע אני אוהב MySQL...

ב־יום שלישי, 27 בינואר 2009, מאת ארתיום; פורסם תחת: תכנה חופשית, לינוקס, פיתוח, תכנה ומחשבים; ‏13 תגובות

אני יודע שיש אנשים שלא סובלים MySQL ומעדיפים כל דבר על פניו. יש הרבה ביקורות כלפי MySQL ויש לו לא מעט בעיות... אבל, מתוך ניסיון עבודה עם MySQL, Sqlite3, PostgreSQL וניסיון מועט בעבודה עם Firebird ו־MS SQL... אני מעדיף MySQL ובמקום השני Sqlite3.

מודע? כי הוא לא דורשים ממך תואר ב־DBA כדי להשתמש בו. הוא נותן לך כלים טובים ונוחים, לשמור, לנהל ולשלוף מידע בצורה פשוטה ונוחה; והסיבה העיקרית לכך:

הם עושים את הדבר הנפוץ פשוט

דוגמה 1: יצירת unique row id

אני יודע עידו כל־כך לא אהב איך שזה עובד ב־MySQL. אבל זה עובד בצורה פשוטה מאוד. יותר מזה היא מתנהגת בצורה הגיונית (לפחות בעיני).

דוגמה: אם אני יצרתי schema:‏

create table users (
  id integer NOT NULL AUTO_INCREMENT,
  name varchar(32) NOT NULL
);

ואז מייבא נתונים קיימים:

insert into users(id,name) values(1,'Yossi');
insert into users(id,name) values(2,'Moshe');

ואז מוסיף משתמש חדש:

insert into users(name) values('Artyom');

אני אקבל id=3 כפי שניתן לצפות. מצד שני, ב־PostgreSQL אני חייב לעדכן sequence אחרי הכנסה של ערך ידני, אחרת אקבל התנגשויות.

ב־Firebird אתה בכלל חייב תואר שלישי ב־DBA כי ליצור auto-increment כי זה נעשה רק עם trigger.

או קיי, אבל מה אם אני רוצה לעשות משהו מסובך באמת שלא נתמך ע"י auto_increment פשוט? אז גם זה אפשרי עם כתיבת trigger. אבל המקרה הנפוץ הוא פשוט.

דוגמה 2: הוספה או עדכון

עוד משהו שתמיד הפריע לי ב־SQL הסטנדרטי, כיצד אני עושה Update אם ערך קיים או insert אם הוא לא קיים?

פעולה מאוד נפוצה שאני ממש לא מבין לא היא לא חלק מ־SQL סטנדרטי... ב־MySQL וגם ב־Sqlite יש replace וגם יש לך אופציות שונות איך להתנהג אם ערך קיים: להתעלם, לעדכן, לעשות rollback וכד'.

איך עושים את זה ב־PgSQL? כותבים פרוצדורה של... תעשו חיפוש בגוגל, אני רוצה לדעת אם מישהו ימצא פתרון בפחות מ־5 שורות SQL... כנ"ל Firebird ו־MS SQL. למשל, כך עושים את זה ב־Firebird‏, מישהו היה מנחש?

אני יודע ש־MySQL אינו בסיס נתונים מושלם, יש לו הרבה בעיות ונקודות בהן אפשר ליפול... אבל יש לו יתרון אחד גדול, אתה לא חייב להיות DBA כדי להשתמש בו.

העמוד הקודם

העמוד הבא

דפים

נושאים