הרצת שאילתה עם פרמטרים – זהירות!

by Tal Giladi26. June 2013 10:27

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

כשאתה מכניס פרמטר לשאילתה ונותן לו סוג דטה של DbType.String, הפרמטר יגיע לשרת עם N לפני הערך, כדי לתמוך בערכי יוניקוד וכו’. אם יש לך אינדקס על העמודה הזאת, וסוג העמודה הוא לא באמת nvarchar, אלא סתם varchar, השאילתה לא תשתמש באינדקס, אלא פשוט תרוץ על כולו

דוגמה: עמודה בדטה בייס

- index username varchar

cmd.CommandText=”select * from users where username=@username

var p1=cmd.CreateParameter();

p1.DbType=DbType.String;

cmd.Parameters.Add(p1)

השאילתה הסופית לא תשתמש באינדקס

הפיתרון:

1. להשתמש בסוג  AnsiString

2. להשתמש ב Stored procedure

Tags:

Improvement of UserAgent API

by Tal Giladi18. June 2013 11:56

זה מה שאני בניתי בתור צורה משופצרת של http://user-agent-string.info/api

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

שיפור קטן שמגדיל את היעילות ומהירות ללא היכר

1. יצירת טבלה שתואמת למידע המוחזר

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

3. אם קיימת מצוין. אם לא קיימת, לפנות ל API שלהם אך לא לזה שמושך את כל הקובץ, אלא לזה שבודק רשומה אחת

4. לעדכן את הדטה בייס עם הרשומה החדשה

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

Tags:

הגבלת זמן של פעולה

by Tal Giladi12. September 2012 14:16

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

   1:                    Parser p = new Parser(text);
   2: var task = new System.Threading.Tasks.Task(p.Parse);
   3:                    task.Start();
   4: if (task.Wait(1000 * 60) == false)
   5:                    {
   6: 
   7:                    }
   8: else
   9:                    {
  10: var result=p.Result;
  11:                    }

Tags:

בדיקות ומוק-אפס

by Tal Giladi21. December 2011 10:19

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

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

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

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

Tags:

About the author

Something about the author

Month List