ארכיון

ארכיון לקטגוריה ‘טיפים’

קבלת ציוצים באמצעות jQuery

28 ספטמבר, 2009 אבי צוראל View Comments

כמו שהרבה מכם יודעים אני אוהב טוויטר מושבע, אני עושה בטוויטר שימוש יומיומי גם אישי וגם עסקי.

כמו בהרבה דברים שאני עושה אני אוהב לצלול יותר פנימה וכמובן שיצא לי לעבור על הAPI של טוויטר, גם בשביל העבודה שלי על פרויקט קוד פתוח שנקרא HebTweet (שהיום כבר עבר לאייפון ואני לא מעורב בו) וגם בשביל עוד כמה פרויקטים מעניינים הקשורים בקוד פתוח.

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

כמובן שלאותו מייל עניתי: "הממ…כן, אתה יכול!"

קוד jQuery

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

איך מתאימים את הקוד לצורכיכם?

משנים את המשתנה twitterUsername – זה המשתנה שיקבע את שם המשתמש שהציוצים שלו ימשכו
יש עוד משתנה שקובע את כמות הציוצים שהשאילתה תחזיר אבל אני חושב שזה די ברור מהקוד :-)

   1: function getuserTweets() {

   2:     var twitterUsername = 'KensoDev';

   3:     var twitCount = 50;

   4:     $.getJSON(

   5:         'http://search.twitter.com/search.json?callback=?&rpp=' + twitCount + '&q=from:' + twitterUsername,

   6:         function(data) {

   7:             $.each(data, function(i, userTweets) {

   8:                 for (var tweet = 0; tweet < userTweets.length; tweet++) {

   9:                     if (userTweets[tweet].text !== undefined) {

  10:                         $('body').append('<p>' + userTweets[tweet].text + '</p>');

  11:                     }

  12:                 }

  13:             });

  14:         }

  15:     );

  16: }

בהצלחה

קטגוריות:jQuery, tips, tricks, טיפים תגיות:, ,

כיצד תהיו מקצוענים בפיתוח תוכנה? חלק 2

26 ספטמבר, 2009 אבי צוראל View Comments

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

במהלך היום וקצת הזה מאז הפוסט הקודם אספתי עוד נקודות על הנקודות שכבר היו לי בעיקר בעזרתו האדיבה של חברי היקר @eladmeidar

מכונת זמן מישהו?

אם אתם מפתחים לבד או בצוות של 30 אנשים, זה בכלל לא משנה. החלק הזה של הפוסט נוגע לכם ברמה הקרובה ביותר שיכולה להיות.
אתם צריכים להשתמש בSource Control כלשהו, זה בכלל לא משנה באיזה אתם משתמשים.

הרבה פעמים אני מגיע לחברות ואז אני שומע את המתכנתים אומרים: יכול להיות שאין לי את הגרסה החדשה? שלח לי אותה במייל… ואז אנחנו מגיעים שוב לנקודה של להיות שבויים בהמתנה (נקודה מהפוסט הקודם)

בין אם אתם משתמשים בSVN או בGIT, גם אם אתם משתמשים בשרת פנים חברתי או בGoogle Code זה בכלל לא משנה, אתם צריכים להכיר את הכלים לSource Control ולהשתמש בהם. לעשות Commit כשסיימתם וUpdate לפני שאתם מתחילים.

Patching

אם יש לכם "חייזר" (מפתח מחוץ לצוות) שבא לפתור בעיה ספציפית אל תהיו שבויים בלשלוח לו את הקוד התקול ושישלח לכם את הקוד המתוקן, תנו לו את הקוד ושיכתוב Patch, בינתיים אתם תעבדו על דברים אחרים וכשתקבלו את הPatch תכניסו אותו פנימה והכול דבש! :-)

תוודאו מה אתם צריכים לעשות ואז תוודאו שוב

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

לעיתים (די קרובות) אני מקבל תשובה בסגנון "תתחיל לעשות XYZ ואנחנו נעביר דרישות בהמשך".

תסרבו!

תבדקו ותשאלו מה בדיוק צריך לעשות לפני שאתם מתחילים, הקו הכללי של הפרויקט צריך להיות Crystal Clear וללא נקודות שחורות גדולות, כמובן שיכול להיות שלא יהיה לכם 100% מהמידע אבל המידע שחסר לכם צריך להיות כזה שלא יגרום לכם לעשות שינויים מרחיקי לכת ובטח לא כזה שיגרום לעבודה כפולה, לא שלכם, לא של הצוות שלכם זה בזבוז זמן וכסף ואפילו לא של משלם המיסים אלא לעיתים קרובות אפילו שלכם.

פעם קיבלתי מייל כזה מלקוח:

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

נאמן למקור נשבע לכם, שתי שורות שיכלו להתבטא ב20 דקות עבודה ובאותה קלות בדיוק ב20 שעות, אל תתביישו לשאול שאלות, גם אם הן נראות לכם שאלות טפשיות וברורות, תשאלו!

תשמרו את הלקוח שלכם מיודע

אם אתם שכירים הלקוח שלכם יכול להיות המנכ"ל של החברה והוא יכול להיות גם הלקוח הסופי, אם אתם פרילנסרים (כמוני) הלקוח שלכם הוא חברה או לקוח סופי אבל זה בכלל לא משנה.

מה הנקודה?

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

נתקלתי פעם בחברה שידעה לקוח (גדול מאוד, פרויקט עצום) על איחור של שבועיים בפרויקט לילה לפני ההשקה, שלוש שעות אחרי שהלקוח הרים כוסית עם הצוות שלו שמחר מרימים את האתר אחרי 4 חודשים של עבודה.
אחרי שבועיים התברר שבכלל הפרויקט מוכן רק ב80%, הפרויקט עלה לאחר 6 חודשים וגם לא גמור.

המנעו מזה! כמו מאש!

תיידעו את הלקוחות שלכם, אמרו להם את האמת בפנים, תיידעו במיילים.
עדיף שהלקוח ידע מוקדם מאשר מאוחר.

אם אתם פרילנסרים סעיפים אלה נוגעים אליכם.
אתם יוצאים למילואים? תודיעו!
יוצאים לחופש עם האישה לשבוע? תודיעו!
אתם חולים ליותר מיום אחד? תודיעו!

הבנתם? יופי :-)

שירות, שירות, שירות

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

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

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

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

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

תרשום תרשום…

לקוח מדבר אתכם? תהיו עם דף ועט זמינים.
לקוח שולח אליכם מייל עם באג – שלחו אותו למערכת הבאגים שלכם (פירוט בהמשך).

מכירים את המילה "שכחתי", תשכחו אותה :-)

תשתמשו בכלים שיעזרו לכם לזכור על מה דיברתם עם הלקוח, זה לא חייב להיות משהו היי-טקי, זה יכול להיות Low tech לגמרי ולהסתכם בדף ועט (שבסוף כול יום עוברים על מה שרשמנו וכותבים ליום הבא).

GTD – Getting Things Done!

האמת, אני מרגיש לא מספיק ראוי לדבר על השיטה :-) חפשו עליה חומר באינטרנט, ישמו אותה בכול אספקט של עבודה שלכם, מפיתוח ועד תקשורת מול לקוח (ואפילו יצא לי חרוז)

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

תוכנית חדשה של מיקרוסופט – Website Spark

26 ספטמבר, 2009 אבי צוראל View Comments

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

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

הרכזת מיקרוסופט על תוכנית חדשה

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

(צילום מסך מאתר התוכנית)

webadbaehn4n4tn

אורך התוכנית: 3 שנים בהם תוכלו לצאת מהתוכנית בכול נקודה, לשלם 100 דולר ולהגיד שלא הייתם מרוצים – אך זו כמובן לא הכוונה.

מה התוכנית כוללת?

3 רשיונות לVisual Studio 2008 Profesional Edition
1 רישיון לExpression Studio 2 או 3
2 רישיונות לExpression Web 2 או 3
3 רישיונות ל Windows Server 2008 ול Sql Server 2008
4 רישיונות מעבר לWindows 2008 ול Sql server 2008

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

כדאי מאוד לקרוא את התנאים באתר של מיקרוסופט (כי יש כאלה).
הרישום אורך דקות ותוך 72 שעות בערך מקבלים אישור למייל ויכולים להוריד את התוכנות.

למי זה מתאים?

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

למי זה לא מתאים?

זה לא מתאים לכם אם אתם כבר חברים של אחת התוכניות במיקרוסופט כמו ActionPack או מנוי MSDN כזה או אחר.

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

כיצד תהיו מקצוענים בפיתוח תוכנה?

26 ספטמבר, 2009 אבי צוראל View Comments

שלום לכולם,

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

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

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

טוב, נתחיל?

משמעת

נתחיל בכך שבעצם המון מתחיל במשמעת, אנחנו יכולים לדבר ימים ושבועות על עקרונות הOOP על מה זה SOLID או האם כדאי לכתוב בWebForms או ששווה כבר לעבור לMVC אבל האמת היא שלא שם זה מתחיל.

הכול מתחיל במשמעת.

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

זמנים קצרים

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

אל תהיו שבויים

מכירים את זה שאתם לא מתחילים פרויקט בגלל שחסר לכם משהו קטן שהלקוח צריך לספק?

הממ, שקרנים :-)

כן, אני יודע אתם לא בונים שום דבר לפני שיש לכם את כול ההגדרות, כן אני יודע שאתם לא רוצים שדברים ישתנו ואז תצטרכו לזרוק קוד לפח.
טוב, אז בואו נרגיע, אתם תזרקו קוד לפח!

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

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

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

סגור? נמשיך :-)

תמנעו מצימוד

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

זה רע!

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

ארכיטקטורה מסובכת… אוי ואבוי

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

אני מכיר חברות שכול כך סבוכות בתוך הארכיטקטורה הבלתי אפשרית שלהם שפשוט מפסיקות לשלב מוצר מסוים בגלל שהאנשים (בשיווק) כבר לא מאמינים בו.

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

שיפורים קטנים, קטנים אבל תמיד

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

שימו לעצמכם ביומן כול יום לעשות שיפור בקוד שלכם, תעברו על פרויקטים אקראיים למשך שעה ביום, תשפרו פיסות קוד, תעבירו נתונים לCache במקום בסיסי נתונים, תכתבו string.Format במקום לשרשר String אקראיים.

שיפורים קטנים לאורך זמן יהוו שיפור גדול מאוד בסופו של דבר.

ממה להמנע? להמנע מאוד מלהגיד “אני אכתוב את זה טוב יותר אח”כ”, אתם לעולם לא תעשו את זה.

כתיבה מחדש – אוי ואבוי גדול מאוד

שבועת צופים
אין חברה שנכנסתי אליה עד היום שלא שמעתי את המשפט “המערכת הזו דפוקה צריך לכתוב אותה מחדש לגמרי”
אפילו לא חברה אחת.
יש איטיות? צריך לכתוב מחדש
יש בעיה בבסיס נתונים? צריך לכתוב מחדש
קוד HTML גרוע? צריך לכתוב מחדש

תדמיינו אותי בתור המנכ”ל שלכם, אני לעולם לא הייתי מאפשר את זה, לעולם!
זה מטומטם מבחינה תקציבית, תיאורטית, מעשית ועוד הרבה

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

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

אל תכתבו קוד רע

החוק הזה יגרום לכם ללכת ולא לרוץ, תמיד.

אי אפשר למהר בטירוף ולא לכתוב קוד רע.

Uncle Bob נותן כאן בהרצאה שלו השוואה מדהימה שאני רוצה לקחת ממנו ולכתוב אותה כאן.

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

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

כאן מסתיים החלק הראשון, המשך יבוא…

איך אומרים באנגלית Chew on it for a while…

קטגוריות:tips, tricks, טיפים, כללי תגיות:

jQuery למתחילים

21 אוגוסט, 2009 אבי צוראל View Comments

שלום לכולם,

כבר הרבה זמן שאני רוצה ומתכוון להקליט ScreenCast על jQuery.

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

אשמח לתגובות

מעבר על jQuery from Avi Tzurel on Vimeo.

ולידציה לתעודת זהות ישראלית בC#

20 אוגוסט, 2009 אבי צוראל View Comments

שלום חברים,

לאחרונה הייתי צריך לעשות ולידציה למספר תעודת זהות ישראלית.
הולידציה היא בטופס סליקת כרטיס אשראי ספציפית אבל זה לא משנה כלל לפונקציה :-)

הפונקציה בודקת תעודת זהות של 9 ספרות בלבד, במידה ומישהו כתב מספר עם 8 ספרות הולידציה לא תעבוד.
גם לא ניתן להסיק בוודאות שהמספר הראשון הוא 0 ולכן צריכה להיות ולידציה ראשונית לפני שאתם מגיעים לצד שרת. (9 ספרות בלבד)

תיהנו

   1: public static bool validateID(string idNumberString)

   2: {

   3:     if (idNumberString.Length < 9)

   4:         return false;

   5:

   6:     int int1 = Convert.ToInt32(idNumberString.Substring(0, 1)) * 1;

   7:     int int2 = Convert.ToInt32(idNumberString.Substring(1, 1)) * 2;

   8:     int int3 = Convert.ToInt32(idNumberString.Substring(2, 1)) * 1;

   9:     int int4 = Convert.ToInt32(idNumberString.Substring(3, 1)) * 2;

  10:     int int5 = Convert.ToInt32(idNumberString.Substring(4, 1)) * 1;

  11:     int int6 = Convert.ToInt32(idNumberString.Substring(5, 1)) * 2;

  12:     int int7 = Convert.ToInt32(idNumberString.Substring(6, 1)) * 1;

  13:     int int8 = Convert.ToInt32(idNumberString.Substring(7, 1)) * 2;

  14:     int int9 = Convert.ToInt32(idNumberString.Substring(8, 1)) * 1;

  15:

  16:     if (int1 > 9) int1 = (int1 % 10) + 1;

  17:     if (int2 > 9) int2 = (int2 % 10) + 1;

  18:     if (int3 > 9) int3 = (int3 % 10) + 1;

  19:     if (int4 > 9) int4 = (int4 % 10) + 1;

  20:     if (int5 > 9) int5 = (int5 % 10) + 1;

  21:     if (int6 > 9) int6 = (int6 % 10) + 1;

  22:     if (int7 > 9) int7 = (int7 % 10) + 1;

  23:     if (int8 > 9) int8 = (int8 % 10) + 1;

  24:     if (int9 > 9) int9 = (int9 % 10) + 1;

  25:

  26:     int sumOfAllInts = int1 + int2 + int3 + int4 + int5 + int6 + int7 + int8 + int9;

  27:

  28:     sumOfAllInts = sumOfAllInts % 10;

  29:     if (sumOfAllInts > 0)

  30:         return false;

  31:     else

  32:         return true;

  33: }

הקוד המקורי מאתר ASP תרגמתי אותו לc# והוספתי ולידציה לאורך של 9 תווים בהתחלה.

שיהיה בכיף!

אם אתם משתמשים בקוד שימו איזה תגובה כדי שאני אדע :-)

קטגוריות:Asp.Net, c#, tips, tricks, טיפים, כללי תגיות:, ,

פתרון גיבוי מלא וחינמי למחשב באמצעות SyncBack

19 אוגוסט, 2009 אבי צוראל View Comments

שלום לכולם,

באחד הפוסטים האחרונים שלי לגבי כלי שבהם אני משתמש המלצתי על תוכנת SyncBack שהיא תוכנה חינמית לביצוע גיבויים למחשב שלכם.

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

הסרטון יציג את השלבים ליצירת גיבוי מההתחלה ועד הסוף ללא פרטים שאתם לא צריכים.

במידה ויש שאלות, אשמח אם תגיבו לפוסט הזה ואני אשתדל לענות על כולן

תודה

גיבוי מלא למחשב באמצעות Syncback from Avi Tzurel on Vimeo.

סקיילינג – או איך לא תענשו בחומרה – פתרון אמיתי

14 אוגוסט, 2009 אבי צוראל View Comments

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

במה הפוסט יעסוק?

הפוסט הזה יעסוק בסקיילינג שזה אומר איך לגרום לכך שהאתר / שירות שלכם יעמוד בעומס הגולשים ביש אליו, בעומס המידע וכמות הבקשות מהשרתים שלכם.

יהיו כאן שיקולי תקציב, שיקולי מיקום, חומרה מומלצת ועוד.

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

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

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

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

לחברת בניית האתרים VVV יש כ150 לקוחות, חלק מהלקוחות הינם לקוחות עם חנות וירטואלית אתרי תדמית ומערכות אחרות, חלק בנויות בAsp.Net וחלק בClassic ASP.

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

המטרה: להגיע ל7 שניות ללא שיפורי קוד ומשם לשפר את הקוד עד ל1-3 שניות.

טוב, יאללה לעבודה.

סליחה, דבר קטן לפני, אני לא אגע כאן בהמלצות הברורות מאליהן של Yslow וכול שירות אחר שיגיד לכם דברים שהם Obvious, אלה הfine tuning הסופיים של שלב כזה, אל תקדישו את המאמצים ותחשבו שזה מה שיציל אתכם מקריסת מערכות.

סליחה עם ניפצתי למישהו איזה בועה

עכשיו באמת אפשר להתחיל

שלבי העבודה:

קוד

  • 1. בדיקת איכות הקוד
  • 2. בדיקת טיוב שאילתות בסיס נתונים
  • 3. בדיקת גישות לבסיס נתונים מרמת האפליקציה
  • 4. בדיקה גישות לדיסק דרך הקוד (כתיבת וקריאת קבצים)

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

בדיקת איכות הקוד

רגע רגע, איכות קוד? מה זה אומר בדיוק? כמו שבודקים אבטיח או מלפפון?

בדיקת איכות הקוד הראשונית אומרת לבדוק את שיטת העבודה, במידה ומדובר בAsp.Net לבדוק שימוש יתר בViewState, שמירה של אובייקטים גדולים מדי בזיכרון או שמירה של אובייקטים לא מתאימים.

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

עוד…

האם ישנם טיימרים בJavascript שניגשים לשרת ומכבידים עליו מאוד, כלומר אם מישהו השאיר את הדפדפן פועל, האם השרת יקבל עשרות או מאות בקשות בשביל לקוח יחיד?

רגע זה לא Refactoring???

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

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

בדיקת טיוב שאילתות בסיס נתונים

בסיס הנתונים הוא הלב הפועם של האפליקציה שלכם, של השירות, של השרת של הכול בעצם.

הכול מנותב דרכו, יש לוגיקות שהוא מנהל ויש מקרים שהוא סתם Data Storage Center, עכשיו מה זה אומר טיוב…?

אני אגיד מה זה לא אומר… זה לא אומר לבדוק 2 שניות או 1.5 שניות, זה אומר לבדוק מקרים שבהם יש TimeOut.

סיפור אמיתי, אני נשבע!

אצל הלקוח VVV הייתה טבלה ששומרת נתוני Session, נתונים אלה נשמרו פעמיים בPageInit ובPageLoad, בגדול זה צעם חכם מאוד לשמור נתונים על הלקוח ולוודא שאין Fraud, אבל הטבלה הזו הלכה והתנפחה, הנתונים שהיו בה היו נתונים בינאריים.

שמירה לטבלה הזו לקחה 2 שניות, משיכה ממנה לקחה 7, לעיתים אפילו הSQL קיבל TimeOut.

רגע, אז מה אני עושה במקרה כזה? או… גם המתכנת שאני לקחתי דרך אתר XYZ עשה את זה, מה אני יכול לעשות עכשיו.

אם יש לכם Sql Server 2005 או 2008 ואפילו 2000 (אלוהים יודע למה) עם רישיון מלא אתם יכולים להגדיר Jobs, אצל הלקוח VVV אני הגדרתי JOB שבודק את התאריך (שגם הוא לא היה) של השמירה, היות ונתוני Session נמחקים לאחר 20 דקות בכול מקרה ברמת השרת פשוט וידיתי מחיקה גם מבסיס הנתונים.

100 מוצרים בדף, 20 דפים

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

לא הגיוני נכון?

אז ככה, אני מוכן לעשות התערבות שאם יש לכם אפליקצית Dot NET שמישהו בנה לכם הדפדוף הוא בצורה כזו ב95% מהמקרים מה שאומר שהשרת שלכם מבזבז עשרות אלפי בייטים מבוזבזים של מידע שעולים לכם בNetwork עולים לכם בSystem.IO ועוד.

בדיקת גישות לבסיס הנתונים מרמת האפליקציה

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

בואו נגיד שעד 10 זה בסדר (לא מצוין אבל בסדר)

14-08-2009 15-09-28

מה זה הציור הזה?

ראשית הקרדיט לבלסמיק :-)

הציור הזה הוא איך שמסודרים מוצרים או כול רשומה אחרת, עכשיו דמיינו מצב שבסיס הנתונים ניגש פעם אחת להביא את כול הרשומות ועוד פעם על כול רשומה רק בשביל להביא תמונה…

עכשיו בואו נראה מה קורה בתרשים גישות מאוד ציורי :-)

with_arrows

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

בדיקה גישות לדיסק דרך הקוד (כתיבת וקריאת קבצים)

System.IO היא פעולה יקרה מאוד (כתיבה או קריאה מהדיסק), אמנם גם בסיס נתונים בסופו של דבר מבצע פעולות קראה וכתיבה לדיסק (בזה גם נגע מאוחר יותר בפוסט הזה).

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

יש להשתמש בDisk Caching ולא ליצור את התמונה On Demand במידה וכבר יש אותה.

בחברת VVV אחרי השלבים האלה הגענו למצב של 2-5 שניות לדף וללא קריסות, כלומר אין יותר דפי שגיאה, אין יותר אנשים שמגיעים למחוז שהוא לא מחוז חפצם.

אבל רגע, השרתים עדיין מראים בניטור ניצול מלא כמעט של זיכרון, ניצול מעבר ליכולות הדיסק הקשיה ו20% ניצול CPU (במושגים של שרת זה די אומר שאתם בזבל :-) )

חומרה, אבל לא עונש

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

עכשיו, מכיוון שכאן השמיים הם הגבול אני אציג שתי פתרונות, זול וטוב, יקר ומצויין

אבל לפני הכול, שיקולים שיש לקחת בחשבון

1. זמן Uptime
2. שרידות מערכת אפליקטיבית
3. קצבים (לא butcher אלא pace :-) )

זמן Uptime

המון חברות אכסון שבהן אני נתקל באינטרנט מתגאים ב99.9% זמן Uptime, זה ברור :-) אבל לא לזה אני מתכוון.
זמן Uptime מבחינתי אומר – כמה שפחות Down time.

המערכת צריכה להיות מתוכננת עד כמה שאפשר ללא Single point of failure ברמת החומרה, בטח שלא ברמה אפליקטיבית.
זמן התגובה לקריסת חומרה (זה קורה, נדיר אבל קורה) צריך להיות סופר מהיר.

שרידות אפליקטיבית

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

קצבים

קצב קריאות אפשרי לבסיס הנתונים, קצב כתיבה לדיסקים, קצב רשת

זול וטוב, או… נחשוב עוד שנתיים שוב

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

14-08-2009 15-35-18

מה יש לנו כאן

יש לנו שרת SQL יחיד שמתבסס על Dell R610

14-08-2009 15-38-04 שני מעבדי Quad Core
8 GB זכרון פנימי 1333MHZ DDR3
6 דיסקים קשיחים 73GB SAS
שני ספקי כוח בRedundancy כלומר פתרון Fail Safe

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

יש לנו עוד שני שרתי IIS שעובדים בLoad Balancing כלומר יש כאן פתרון עומס על שני השרתים. שרתים אלה נועדו לאכסן את האתרים הגדולים, אלה שצורכים את רוב התעבורה והנפחים. ובכול מקרה יחזירו רק פתרונות דוט נטיים ולא אתרי ASP קלאסי

שרת נוסף IIS נועד להחזיק את האתרי ASP, אין יותר מדי מה להתעמק בו

שרתי הIIS לא צריכים להיות סופר חזקים כמו שרת הSQL ויכולים להיות מבוססים על R410.

רגע רגע, חסר מלח לא?

חסר כאן משהו נכון?
חסר כאן פתרון גיבוי לשרתים נכון?

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

הסיכוי לכישלון חומרה בין שניהם קטן מהסיכון בחוסר גיבוי ולכן בשלב זה מוותרים (זה הפתרון הזול זוכרים)

שרת הIIS מגבה לSQL וההיפך, הגיבוי הזה קובץ פעם בלילה בין שני שרתי הIIS האחרים.

פתרון גיבוי מלא, לא מיטבי ולא Best Case אבל מלא.

אני הייתי שם בחווה HD חיצוני 2TB של Western Digital שמחובר בUSB או ברשת לאחד השרתים ויחזיק את הגיבויים, אחת לשבוע הייתי עושה גיבוי גם ברמת החווה.

FailSafe – מיידי (בגיבוי)

חסרון הפתרון

אין גיבוי לשרת SQL ברמת החומרה, כלומר אם הוא נופל כול המערכת נופלת.

הפתרון היקר. או… לשם שינוי, בוא ונחשוב מעבר לאופק המיידי

image002
בשביל לעשות סדר, בואו נחלק את הפתרון לשלושה חלקים

with_icons

קצת סדר בבלאגן

1. DATA
שני שרתי SQL עם Active/Passive כלומר רק אחד מהם פועל כול הזמן, השני נכנס לעבודה במקרה של קריסה אפליקטיבית או חומרתית.
מה זה הקטן לידם אתם שואלים? :-)
השרת הקטן לידם הוא זה שאחראי להעביר את המידע בין השניים ואת הקבצים, כך שניהם תמיד "נראים" אותו דבר מבחינת האפליקציה ויכול להיות מצב שגולש ישהה בדף ואפילו לא יבחין בנפילה של בסיס הנתונים.

2. IIS גדול
הפתרון הזה הוא לאתרים הגדולים ודומה מאוד למצב הקודם (בפתרון הקודם) אלא שכאן מדובר על עוד שרת אחד

3. IIS קטן
לאתרים הקטנים יותר שלושה שרתים שפשוט מחלקים בינהם את העומס בצורה מאוד פרימיטיבית, חלק מהאתרים יושבים על X חלק על Y וחלק על Z

גיבוי

כול השרתים מגובים בינם לבין עצמם, כולם מגבים לשרת Sync ואחת לכמה ימים גם ברמת החווה.

שיקולי תקציב

בין שתי הפתרונות ישנו הבדל גדול מאוד בתקציב, שרת r610 עולה כ6000 דולר, בפתרון השני יש שניים כאלה, בפתרון הראשון יש אחד, הרי לכם הבדל משמעותי מאוד.

הScale הוא רוחבי כלומר ניתן בהחלט ללכת על פתרון אחד ואז לעשות "התנפחות" לפיתרון השני

הפתרון הראשון יוריד כ30% מזמני התגובה של המערכת באופטימום ועוד כמה אחוזים בעומס מכיוון שיש כאן יותר חומרה

הפתרון השני יעשה הבדל של בערך פי 2

כתבו עלי בYnet עכשיו, מה אני עושה

תראו, במקרים כמו עם משרד הכרטיסים הנודע או במקרה שכותבים עליכם בYner ופתאום יש זרימה של כמה אלפי גולשים אפשר לנתק את שני שרתי הSQL ולהפוך אותם לActive / Active כך אתם מרוויחים במיידי עוד עשרות של אחוזים למקרה קצה ומבטיחים שלא כול האתרים נופלים בגלל אחד שכתבו עליו בYnet.

זהו.

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

אשמח לשמוע ולקרוא תגובות שלכם

או כמו שאמר @liroz משידורי הניסיון, אני פתוח לכול ביקורת חיובית.

כלים שימושיים (3)

12 אוגוסט, 2009 אבי צוראל View Comments

בעקבות הפוסטים המאוד מוצלחים (תודה אנשים על התגובות האוהבות והאוהדות) מגיע כמובטח גם בפוסט השלישי והמסכם (לשלב זה) את הסדרה.

למי שפספס, יכול למצוא את הפוסטים הקודמים כאן וגם כאן

שוב, הנה אנחנו מתחילים, זוכרים שאין סדר הגיוני נכון?

Xenu – Link sleuth

800px-xenu_screenshot_zi2

טוב, כמה מאיתנו מתחזקים אתרים גדולים עם עשרות, מאות או אפילו אלפי לינקים?

מישהו יודע כמה זה מזיק שיש לינק שבור? הן מבחינת גולשים וכמובן מבחינת גוגל.

טוב, אז התוכנה הזו תקבל מכם לינק יחיד ומנ פשוט תשחט את האתר שלכם (לא, לא מילולית) ותעבור על כול הלינקים, תמונות, js, css ועוד.

התוכנה תודיע לכם מה השגיאה שיש, זה לא חייב להיות 404, זה יכול להיות גם 500 (מספרי שגיאות).

התוכנה מוציאה דו"ח התקדמות ודוח סופי, מאוד יעילה ומהירה.

זוהי פעולתה הרשמית של התוכנה :-)

הפעולה הלא רשמית היא Load test מאוד פרימיטיבי, התוכנה יכולה לפתוח מספר Threads ובכך לדמות עשרות משתמשים שגולשים לאתר.

לא הייתי מסתמך על זה, אבל זו יכולה להיות בחינה ראשונית מאוד יעילה, אני פעם  כך עליתי על Connection שנשאר פתוח.

להורדה כאן

Keepass – Password safe

KeePass Password Safe(6)_1

סיסמאות, סיסמאות ושוב סיסמאות.

בכמה אתם משתמשים? אחת? שתיים? שלוש? שקרנים.

התוכנה הזו תקל עליכם מאוד. אני למשל מנהל 8 שרתים עם עשרות חשבונות, SQL, mySql חשבונות בPaypal ועוד.

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

אתם יכולים לנהל Groups של סיסמאות ושל לקוחות שלכם לצורך העניין.

ניתן לייצא ולייבא בכול שלב.

יש לתוכנה גרסה פורטבילית כך שאתם יכולים לקחת את הסיסמאות שלכם אתכם לכול מקום.

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

התוכנה קלה מאוד הן במשקל הפיזי והן בשימוש.

להורדה כאן

PassPack

passpack-online-privacy-manager_1185598891103

אתם בטח אמרתם לעצמכם (בלב) שזה ממש 90's להשתמש בתוכנת Desktop לשמור סיסמאות, אני יכול לעשות את זה באינטרנט.

אז צדקתם, ואתם יכולים לעשות את זה גם בחינם ובלי להשתמש בGoogle Docs ביחד עם גיליון אלקטרוני רחמנא ליצלן.

האתר PassPack נותן לכם את כול האפשרויות שהתוכנה נותנת (כמעט) רק אונליין וזמין מכול מקום.

האתר מאובטח מאוד (לעיתים יותר מדי, אתם תבינו למה אני מתכוון כשתכנסו לאתר)

האתר כאן

Windows Live Writer

windowslivewriter2008

אם יש לכם בלוג ואתם לא מכירים את התוכנה אתם פשוט מפסידים.

התוכנה הזו מבית מיקרוסופט פשוט מדהימה בניהול הבלוג שלכם.

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

התוכנה עשירה בפונקציות ובplugins שניתן להוריד בחינם.

חבל לפרט עוד, פשוט תורידו ותתקינו

הורדה מכאן (חינם)

VLC Media player

vlc_media_player-400-400

לעיתים אני עוסק בעבודה עם קבצי מדיה, בין אם זה mp3 או mp4, לפעמים אפילו עם סרטונים מטלפונים ניידים.

התוכנה הזו היא נגן שיש שמנגן בערך הכול אבל עם יכולות המרה של הקבצים השונים לפורמטים השונים, כך למשל תוכלו להפוך קובץ WAV כבד מאוד לקובץ mp4 בקידוד h.264 דיגיטלי בערך ב10 שניות בלי ידע קודם.

התוכנה קלה מאוד לשימוש ולתפעול ותעבוד על גרסאות חלונות השונות שלכם (XP-7 אני אישית בדקתי)

להורדה כאן

Pure Text

puretext_options

עכשיו ברצינות, אתם לא חושבים שהCTRL+V של חלונות הוא פשוט מסריח?

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

לא הייתם רוצים שCTRL+V פשוט ידביק את הטקסט, בלי שטויות?

הנה, בשבילכם :-)

להורדה מכאן

זהו, אלה בינתיים

אולי יהיו עוד פוסטים כאלה בעתיד

תיהנו, תגיבו, רטווטו עצמכם לדעת

כלים בהם אני משתמש (2)

10 אוגוסט, 2009 אבי צוראל View Comments

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

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

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

VSO Image Resizer

VSO Image Resizer-20081017-071709 מי מכם משתמש במצלמה דיגיטלית?

הורדתם פעם תמונות מהמצלמה וניסיתם להעלות אותן לפייסבוק שלכם?

בטח גיליתם שהמשימה קשה והתמונות פשוט ענקיות הן בגודל והן במשקל שלהן.

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

התוכנה "מתלבשת" על הShell של חלונות (נבדק על כולן מXP ועד 7)

10-08-2009 00-21-39

לאחר שבחרתם את התמונות הרצויות יקפוץ דיאלוג שסביר שתבינו :-) שיבקש את הרזולוציה שאתם רוצים (מומלץ 1024X768) ועוד כמה דברים פשוטים כמו לאיזה ספרייה לזרוק את התמונות החדשות שנוצרו, שלוש-שלושים שניות ויש לכם ספרייה עם תמונות מכווצות להפליא ועם ירידת איכות זניחה ביותר (שגם היא ניתנת לכוונון)

לינק להורדת התוכנה אתם מבקשים בטח לא? הנה כאן

TeamViewer

TeamViewer_full

האמת, שעם ההמלצה הזו באה גם איזה צביטה בלב (או במקומות אחרים) לרובנו.

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

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

אתם מורידים ומתקינים את התוכנה אצלכם, היא לא מופעלת עם הWindows ולא תופסת מקום בזיכרון.

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

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

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

טופין אמיתי

את הקישור לתוכנה ולעוד הסברים ארוכים יותר משלי תוכלו למצוא כאן

SyncBack

syncback-logo

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

אז אני אכתוב חלק.

גיבבבבבבבבבבבבווווווווווויייייייייייםםםםםםםםםםםם!!!

מכירים את זה?

עושים את זה מספיק?

שקרנים!

התוכנה הזו (אמרנו חינמית לא) היא פתרון גיבוי מלא לכול המחשבים שלכם, היא יכולה לעבוד על כול מערכת הפעלה (חלונאית) שלכם, לגבות את הספריות שלכם לכונן רשת, כונן פנימי, FTP, Proxy, לשלוח דוחות למייל, לסנכרן תיקיות מה לא!

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

בזמן שאתם ישנים התוכנה תגבה את כול החומרים שלכם במהירות וביעילות, מומלץ להריץ את הפרופילים ידנית לראשונה במהלך ליל שישי או כול לילה אחר שבו אתם יודעים שיש למחשב כמה שעות טובות לעבוד (תלוי בכמות החומרים שלכם)

חלון הגדרת פרופיל מתוך התוכנה

10-08-2009 00-42-40

שוב אתם מטרידים אותי עם קישור להורדה, מפונקים שכמותכם, טוב הנה כאן

העתק – הדבק של קוד

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

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

השירות שאני הולך להמליץ עליו (חינמי גם הוא) הוא http://snipt.org/

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

אתם עושים Paste של הקוד שלכם לתוך התיבה, בוחרים את השפה ואת הTheme ומקבלים URL שאתם יכולים לשלוח לחבר שלכם.

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

אני לא ממליץ להשתמש בשירות כאיזו ספריית קוד שלכם אבל אתם בהחלט יכולים לעשות בו שימוש לקודים ציבוריים

10-08-2009 00-56-38