בקידום אתרים הכוללים קבצי Flash עלינו לוודא שהקבצים מאפשרים ל Google לאנדקס את תוכן האתר.
המצב נכון להיום הוא כזה:
Google סורק קבצי Flash ומתוכם מחלץ תוכן טקסטואלי , גדג'טים, כפתורים, תפריטים וקישורי URL.
תכנים הנשמרים כתמונות, תפריטים שבנויים מתמונות, קטעי וידאו וכדומה אינם מפוענחים. Google גם לא מפענח עברית מקבצי Flash.
תוכלו לקרוא בקישור הבא עוד לגבי יכולות הזחילה של Google בקבצי Flash
בכדי לוודא שאובייקט Flash שהצבנו באתר מפוענח כנדרש עלינו לוודא את הדברים הבאים:
בקובץ ה Flash יש להשתמש ככל הניתן בטקסט או תפריטים המכילים טקסט ולא תמונות.
באתר חייבות להופיע הפניות נוספות לדפים אליהם מפנה ה Flash. הפניות אלה צריכות להיות כתובות בתגי HTML בצורה פשוטה וברורה.
אני מזכיר בנושא זה גם את ההנחיה הגורפת ליצירת מפת אתר לרובוטים (Site Map).
יום שבת, 30 באוגוסט 2008
יום ראשון, 10 באוגוסט 2008
אימות מספר תעודת זהות וספרת ביקורת
הקוד להלן בודק את תקינות מספר תעודת הזהות. את הבדיקות יש לבצע גם בצד הלקוח ב javascript וגם בצד השרת. הסיבה לביצוע בצד הלקוח היא לתת תגובה מידית ללא צורך בפנייה לשרת. הבדיקה הנוספת בצד השרת נועדה למנוע אפשרויות חדירה, בעיות אבטחה וכדומה.
עקרונות - בדיקת מספר תעודת זהות ישראלית נעשית על פי נוסחה. המספר מורכב מתשע ספרות, שהימנית שבהן היא ספרת ביקורת. סיפרה זו נועדה לגלות בקלות טעות בהקלדת מספר הזהות. במאמר הבא ניתן לקרוא עוד על האלגוריתם לחישוב סיפרת ביקורת של מספר תעודת זהות ישראלית.
JavaScript
----------------------------------
<script LANGUAGE="javascript">
// DEFINE RETURN VALUES
var R_ELEGAL_INPUT = -1;
var R_NOT_VALID = -2;
var R_VALID = 1;
function ValidateID(str)
{
//INPUT VALIDATION
// Just in case -> convert to string
var IDnum = String(str);
// Validate correct input
if ((IDnum.length > 9) || (IDnum.length < 5))
return R_ELEGAL_INPUT;
if (isNaN(IDnum))
return R_ELEGAL_INPUT;
// The number is too short - add leading 0000
if (IDnum.length < 9)
{
while(IDnum.length < 9)
{
IDnum = '0' + IDnum;
}
}
// CHECK THE ID NUMBER
var mone = 0, incNum;
for (var i=0; i < 9; i++)
{
incNum = Number(IDnum.charAt(i));
incNum *= (i%2)+1;
if (incNum > 9)
incNum -= 9;
mone += incNum;
}
if (mone%10 == 0)
return R_VALID;
else
return R_NOT_VALID;
}
</script>
----------------------------------
PHP
----------------------------------
<?php
// DEFINE RETURN VALUES
define(R_ELEGAL_INPUT, -1);
define(R_NOT_VALID, -2);
define(R_VALID, 1);
function ValidateID($str)
{
//Convert to string, in case numeric input
$IDnum = strval($str);
//validate correct input
if(! ctype_digit($IDnum)) // is it all digits
return R_ELEGAL_INPUT;
if((strlen($IDnum)>9) || (strlen($IDnum)<5))
return R_ELEGAL_INPUT;
//If the input length less then 9 and bigger then 5 add leading 0
while(strlen($IDnum<9)
{
$IDnum = '0'.$IDnum;
}
$mone = 0;
//Validate the ID number
for($i=0; $i<9; $i++)
{
$char = mb_substr($IDnum, $i, 1);
$incNum = intval($char);
$incNum*=($i%2)+1;
if($incNum > 9)
$incNum-=9;
$mone+= $incNum;
}
if($mone%10==0)
return R_VALID;
else
return R_NOT_VALID;
}
?>
----------------------------------
ASP
----------------------------------
Dim R_ELEGAL_INPUT
Dim R_NOT_VALID
Dim R_VALID
R_ELEGAL_INPUT = -1
R_NOT_VALID = -2
R_VALID = 1
Function ValidateID(str)
' INPUT VALIDATION
' Just in case -> convert to string
Dim IDnum
IDnum = CStr(str)
' Validate correct input
If len(IDnum) > 9 or len(IDnum) < 5 then
ValidateID = R_ELEGAL_INPUT
Else
If not IsNumeric(IDnum) then
ValidateID = R_ELEGAL_INPUT
Else
' The number is too short - add leading 0000
If len(IDnum) < 9 then
while len(IDnum) < 9
IDnum = "0" & IDnum
wend
End If
' CHECK THE ID NUMBER
Dim mone
Dim incNum
Dim i
mone = 0
for i = 1 to 9
incNum = int(Mid(IDnum,i,1))
incNum = incNum * (((i-1) mod 2) + 1)
If incNum > 9 then
incNum = incNum - 9
End If
mone = mone + incNum
next
If mone mod 10 = 0 then
ValidateID = R_VALID
Else
ValidateID = R_NOT_VALID
End If
End If
End If
End Function
----------------------------------
C#
----------------------------------
class ValidateHelper
{
// DEFINE RETURN VALUES
public enum TzStatus {
R_NOT_VALID = -2,
R_ELEGAL_INPUT = -1,
R_VALID = 1
};
public static TzStatus ValidateID(string IDNum) {
// Validate correct input
if( !System.Text.RegularExpressions.Regex.IsMatch(IDNum, @"^\d{5,9}$") )
return TzStatus.R_ELEGAL_INPUT;
// The number is too short - add leading 0000
if( IDNum.Length < 9 ) {
while( IDNum.Length < 9 ) {
IDNum = '0' + IDNum;
}
}
// CHECK THE ID NUMBER
int mone = 0;
int incNum;
for( int i = 0 ; i < 9 ; i++ ) {
incNum = Convert.ToInt32(IDNum[i].ToString());
incNum *= ( i % 2 ) + 1;
if( incNum > 9 )
incNum -= 9;
mone += incNum;
}
if( mone % 10 == 0 )
return TzStatus.R_VALID;
else
return TzStatus.R_NOT_VALID;
}
}
עקרונות - בדיקת מספר תעודת זהות ישראלית נעשית על פי נוסחה. המספר מורכב מתשע ספרות, שהימנית שבהן היא ספרת ביקורת. סיפרה זו נועדה לגלות בקלות טעות בהקלדת מספר הזהות. במאמר הבא ניתן לקרוא עוד על האלגוריתם לחישוב סיפרת ביקורת של מספר תעודת זהות ישראלית.
JavaScript
----------------------------------
<script LANGUAGE="javascript">
// DEFINE RETURN VALUES
var R_ELEGAL_INPUT = -1;
var R_NOT_VALID = -2;
var R_VALID = 1;
function ValidateID(str)
{
//INPUT VALIDATION
// Just in case -> convert to string
var IDnum = String(str);
// Validate correct input
if ((IDnum.length > 9) || (IDnum.length < 5))
return R_ELEGAL_INPUT;
if (isNaN(IDnum))
return R_ELEGAL_INPUT;
// The number is too short - add leading 0000
if (IDnum.length < 9)
{
while(IDnum.length < 9)
{
IDnum = '0' + IDnum;
}
}
// CHECK THE ID NUMBER
var mone = 0, incNum;
for (var i=0; i < 9; i++)
{
incNum = Number(IDnum.charAt(i));
incNum *= (i%2)+1;
if (incNum > 9)
incNum -= 9;
mone += incNum;
}
if (mone%10 == 0)
return R_VALID;
else
return R_NOT_VALID;
}
</script>
----------------------------------
PHP
----------------------------------
<?php
// DEFINE RETURN VALUES
define(R_ELEGAL_INPUT, -1);
define(R_NOT_VALID, -2);
define(R_VALID, 1);
function ValidateID($str)
{
//Convert to string, in case numeric input
$IDnum = strval($str);
//validate correct input
if(! ctype_digit($IDnum)) // is it all digits
return R_ELEGAL_INPUT;
if((strlen($IDnum)>9) || (strlen($IDnum)<5))
return R_ELEGAL_INPUT;
//If the input length less then 9 and bigger then 5 add leading 0
while(strlen($IDnum<9)
{
$IDnum = '0'.$IDnum;
}
$mone = 0;
//Validate the ID number
for($i=0; $i<9; $i++)
{
$char = mb_substr($IDnum, $i, 1);
$incNum = intval($char);
$incNum*=($i%2)+1;
if($incNum > 9)
$incNum-=9;
$mone+= $incNum;
}
if($mone%10==0)
return R_VALID;
else
return R_NOT_VALID;
}
?>
----------------------------------
ASP
----------------------------------
Dim R_ELEGAL_INPUT
Dim R_NOT_VALID
Dim R_VALID
R_ELEGAL_INPUT = -1
R_NOT_VALID = -2
R_VALID = 1
Function ValidateID(str)
' INPUT VALIDATION
' Just in case -> convert to string
Dim IDnum
IDnum = CStr(str)
' Validate correct input
If len(IDnum) > 9 or len(IDnum) < 5 then
ValidateID = R_ELEGAL_INPUT
Else
If not IsNumeric(IDnum) then
ValidateID = R_ELEGAL_INPUT
Else
' The number is too short - add leading 0000
If len(IDnum) < 9 then
while len(IDnum) < 9
IDnum = "0" & IDnum
wend
End If
' CHECK THE ID NUMBER
Dim mone
Dim incNum
Dim i
mone = 0
for i = 1 to 9
incNum = int(Mid(IDnum,i,1))
incNum = incNum * (((i-1) mod 2) + 1)
If incNum > 9 then
incNum = incNum - 9
End If
mone = mone + incNum
next
If mone mod 10 = 0 then
ValidateID = R_VALID
Else
ValidateID = R_NOT_VALID
End If
End If
End If
End Function
----------------------------------
C#
----------------------------------
class ValidateHelper
{
// DEFINE RETURN VALUES
public enum TzStatus {
R_NOT_VALID = -2,
R_ELEGAL_INPUT = -1,
R_VALID = 1
};
public static TzStatus ValidateID(string IDNum) {
// Validate correct input
if( !System.Text.RegularExpressions.Regex.IsMatch(IDNum, @"^\d{5,9}$") )
return TzStatus.R_ELEGAL_INPUT;
// The number is too short - add leading 0000
if( IDNum.Length < 9 ) {
while( IDNum.Length < 9 ) {
IDNum = '0' + IDNum;
}
}
// CHECK THE ID NUMBER
int mone = 0;
int incNum;
for( int i = 0 ; i < 9 ; i++ ) {
incNum = Convert.ToInt32(IDNum[i].ToString());
incNum *= ( i % 2 ) + 1;
if( incNum > 9 )
incNum -= 9;
mone += incNum;
}
if( mone % 10 == 0 )
return TzStatus.R_VALID;
else
return TzStatus.R_NOT_VALID;
}
}
יום חמישי, 7 באוגוסט 2008
בדיקת תאימות אתר על דפדפנים שונים
כלי ענק שמצאנו ברשת לבדיקת תאימות על מספר דפדפנים.
http://browsershots.org/
אתם נכנסים לכלי, מגדירים את כתובת ה URL לבדיקה, את הדפדפנים שאתם רוצים לסרוק את האתר איתם ועוד הגדרות (תמיכת jave, גודל מסך...). קליק אחד ואתם מקבלים סט של תמונות מסך.
אפשר להוריד את תמונות המסך אליכם למחשב, אפשר לדפדף בניהן, לשלוח למישהו.
תותח על!
http://browsershots.org/
אתם נכנסים לכלי, מגדירים את כתובת ה URL לבדיקה, את הדפדפנים שאתם רוצים לסרוק את האתר איתם ועוד הגדרות (תמיכת jave, גודל מסך...). קליק אחד ואתם מקבלים סט של תמונות מסך.
אפשר להוריד את תמונות המסך אליכם למחשב, אפשר לדפדף בניהן, לשלוח למישהו.
תותח על!
יום ראשון, 3 באוגוסט 2008
מיון לפי תאריך
אם רוצים למיין לפי תאריך. והשנה, חודש, יום בשדות נפרדים, אז סידור של סטרינג כך שהשנה קודם החודש אח"כ והיום בסוף נותן מספר כך שהתאריך יהיה בסדר עולה.
למשל עבור שלוש התאריכים: 18-07-2008, 16-05-2009, 02-09-2008
כשנסדר את זה בצורת הסטרינג הנ"ל:
20080718
20080902
20090516
ניתן לראות שקיבלנו שלושה מספרים מסודרים מהגדול לקטן.
דוגמה לשימוש:
שמות של קבצים ותחקיות, כשעושים גיבויים ורוצים שזה יסודר לפי תאיך.
דוגמה נוספת:
התאריך שמור בשדות נפרדים ב DataBase.
CAST(
CAST(dbo.tTravelInvoices.Year AS varchar) +
CAST(dbo.tTravelInvoices.Month AS varchar) +
CAST(dbo.tTravelInvoices.Day AS varchar)
AS int) AS SortDate
יום שישי, 1 באוגוסט 2008
אזהרה : בעיות רשיון SSL עם Firefox 3
נראה שיש בעיות ברישיון SSL על פיירפוקס 3.
מומלץ לבדוק את האתרים שלנו בטפסים הרלוונטים ולהיות ערים לאפשרות.
הנושא התגלה באתר של אחד הלקוחות.
הכול בסדר בכל הדפדפנים מלבד FF3, בגרסה הנוכחית שלו (3.0.1).
פתרון חלקי שמוצע על ידי FF נמצא כאן.
מומלץ לבדוק את האתרים שלנו בטפסים הרלוונטים ולהיות ערים לאפשרות.
הנושא התגלה באתר של אחד הלקוחות.
הכול בסדר בכל הדפדפנים מלבד FF3, בגרסה הנוכחית שלו (3.0.1).
פתרון חלקי שמוצע על ידי FF נמצא כאן.
הירשם ל-
רשומות (Atom)