הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 17-02-09, 12:26   # 1
Adir
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Feb 2006
הודעות: 685
שלח הודעה באמצעות MSN אל Adir

Adir לא מחובר  

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

קודם כל אני חושב שכדאי להתחיל ממשהו מוכן.. תמיד אם יש לך אפשרות תתבסס על משהו מוכן ואל תתחיל לכתוב מאפס (על פרויקט קודם שלך על מערכת מוכנה על משהו ששלחו לך על משהו שמצאת - כל דבר עם שורשים טובים יכול להיות בסיס טוב למערכת גדולה)
תכתוב קוד מודולארי - קוד שתוכל לעדכן בעתיד, שעוד חצי שנה תרצה ל שפר תוכל
פרק את הדברים לפונקציות - כמה שיותר פונקציות
תהיה הגיוני עם הכמות של הפונצקיות אבל הגיוני גם בשימושיות שלהם, אין צורך להפריד כל דבר לפונקציות אבל הפרדה כזו תיתן לך יותר כוח - כמובן שלא להגזים ולהיות קיצונים
שימוש בפונקציות - תנסה ליישם כמה שיותר פונקציות בתוך פונקציות אחרות ככה שלבסוף הראשי שלך רק יגע בפונקציות ולא יגע במסד נתונים
השאיפה שלך צריכה להיות כזאת - אתה צריך לשאוף להפרדה בין הפלט (HTML וכו') לבין הקוד הראשי לבין הגישה לדטאביס
[להפרדה הזו קוראים MVC בדרך כלל - MODEL VIEW CONTROLLER
כאשר VIEW אלו הקבצי פלט שלך (HTML, שפות, AJAX, JAVASCRIPT, תמונות והלאה)
MODEL - פונקציות ומחלקות שרק הם ורק הם מבצעות עיבודים וניגשות לדטאביס
CONTROLLER - הקוד הראשי שלך - השאיפה שלך היא שבקונטרולר אתה תיגש רק לפונקציות ומחלקות בMODEL ובVIEW
הקונטרולר אמור למעשה להשתמש בתוצאות של הMODEL וליישם אותם בVIEW
כאשר הVIEW רק כולל הצגה של המידע - אבל לא בהכרח סטאטית - לדוגמא אם תרצה להדפיס 10 שורות אחרונות מטבלה מסוימת אתה לא תבצע הדפסה 10 פעמים בקונטרולר, אלא תשלח לVIEW אוביקט עם כל עשרת האוביקטים הקטנים שכל אחד מייצג שורה ובVIEW תהיה לולאה שתדפיס את הערכים - אתה מבין?

אני יכול להמשיך ולהמשיך אבל באמת שאין טעם

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

בהצלחה ולהת'
תודה על המידע, רואים שאתה מבין בזה
אני רוצה לדעת עוד על מערכת plugins.
כמו בDotNetNuke או בהרבה CMSים אחרים, אפשר להוריד נגיד קובץ ZIP ולהתקין אותו על ידי הפאנל ולהוסיף את הפונקציונאליות שלו לתוך אתר.
  Reply With Quote
ישן 17-02-09, 18:19   # 2
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

ציטוט:
נכתב במקור על ידי Adir|HomeServ.co.il צפה בהודעה
תודה על המידע, רואים שאתה מבין בזה
אני רוצה לדעת עוד על מערכת plugins.
כמו בDotNetNuke או בהרבה CMSים אחרים, אפשר להוריד נגיד קובץ ZIP ולהתקין אותו על ידי הפאנל ולהוסיף את הפונקציונאליות שלו לתוך אתר.
אממ תראה באמת שאני לא תותח C#, וגם אני לא מתיימר להיות (יודע C# על כל בוריה אבל לא יצא לי לפתח משהו וגם את האמת לא רוצה - רק OPEN SOURCE ), אבל בגדול אני יכול לתת לך סקירונת על איך התהליך עובד

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

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

דוגמא קלאסית - אני רוצה בסיום הצגת טופס ההרשמה להוסיף שדה שבו המשתמש יכניס לינק לפייסבוק, אז יש HOOK בקצה הטופס הרשמה, שאליו כל פלאגין יכול לשלוח מידע וכאשר העמוד הרשמה ירוץ במהלך זריקת הפלט המערכת תבדוק אם יש פלאגינים מותקנים שיש להם דברים להוסיף לאותו HOOK ואם כן היא תדפיס אותם.
אותו דבר תקף גם בעיבוד (הרצה של קודי PHP) של הטופס - לאחר שהמשתמש שלח את הטופס יש עוד HOOK שבו יטען החלק שמעבד את המידע של הפיסבוק, לצורך הענין שולח אותו במייל
בנוסף לזה כיוון שלפעמים יש שימוש באותו הוק על ידי 30 פלאגינים כדאי להגדיר סדר עדיפויות מ1 עד 10 כאשר הפלגינים בעלי הסדר עדיפות הכי רב יורצו קודם וכך הלאה

מערכת דיבאגינג - עדיף לכתוב מערכת דיבאגינג לפחות ברמת הבסיס (סוג של SCAFFOLDING ) שתציג מה קורה בכל HOOK ותיתן למפתח אפשרות לדבג את הפלאגין שלו מבלי לגעת בקוד המקור - לא יודע אם אנשים נורמלים היו עושים את זה אבל עקב חיבה מיותרת לפיירפוקס הייתי יוצר INSTANCE של המחלקה של FIREPHP ונותן לאנשים לדבג איתה (:

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

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

נקודות חשובות במערכת בנוגע להוספה:
* כדי ליצור טבלאת משתנים שלמעשה תהיה במבנה כזה שכל שורה תקבל ID, NAME, VALUE
וכמובן UNIQUE NAME וID AUTO INCREMENT
כאשר הטבלה הזו מיועדת להחזיק ערכים כמו משתנים לדוגמא
$a = 2;
אז בדטאבייס נחזיק בNAME את a ובVALUE את 2
אולי אפשר להחזיק עוד עמודה לסוג המידע

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

* עמודי ניהול
השיטה הכי נוחה ליצירת עמודי ניהול היא לתת כמה שיותר כוח - כוח ניתן בגישה מלאה - אין צורך ליצור (לפחות לדעתי) API לכתיבת עמודי ADMIN, אלא פשוט לבצע את זה באופן הבא:
פונקציה A מחזיקה את התוכן של הADMIN PAGE, פונקציה B היא פונקציה שמוגדרת בAPI שכאשר אתה קורא לה כך:
B('A', 'Menu Link Text', 'Page Title');
היא יוצרת עמוד חדש בעל לינק בתפריט שהוא כמו שהוזן וכותרת כמו שהוזנה
כל שאר העמוד נוצר לאחר הרצה של הפונקציה A שהוזנה לפונקציה B שהיא כמובן מהAPI שכתבנו

תהליך ההתקנה
כאשר אתה מתקין פלאגין צריכים להיות מספר שלבים - כמובן שאפשר לשנות את זה ולALTER את זה כמה שתרצה (שוב - זה לפי מה שאני היתי עושה.. UP TO YOU)

העלאת הקבצים
צריכה להיות תיקית פלאגינים בשרת שאף אחד מלבד הקוד עצמו לא יכול לגשת אליה - אם ממש רוצים לחסום אפשר למקם מחוץ לתיקית הHTTP אבל HTACCESS יעשה את העבודה

בעמוד התקנת הפלאגינים תראה את כל הקבצים בתיקיה
קבצי ההתקנה של הפלאגינים יכילו איזהשהו מבנה של ההערות לדוגמא
PHP קוד:
<?php
/*
name: abcd
author: abcddd
website: abcdsfds
*/

// your code goes right here
והמערכת תעבור פשוט כל הקבצים בהיררכית תיקיות הזו עם ביטוי רגולרי או סתם פונקציות של סטריגנים ותשאב את המידע שכתוב בקומנטים אל תוך העמוד הוספה והסרה

ברגע של הוספת הפלאגין אתה תגדיר HOOK מסוים וברגע של ההסרה עוד HOOK

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

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

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

רצוי לספק בAPI את הROOTPATH של התיקיית פלאגינים למען גישה לוקאלית (להעלאת קבצים וכו') וגם URL מלא לכתובת האתר וURL לפאנל הניהול שמכאן הפלאגין ידע לנהל את עצמו לבד

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

קבצי הפלאגין ישארו בשרת - באמת שהם לא מפריעים לאף אחד


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

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

בהצלחה לך (:
__________________
  Reply With Quote
ישן 18-02-09, 13:07   # 3
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

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

אבל חוץ מפלגינים יש דברים מסובכים הרבה יותר, למשל מערכת VirtualCron[לקח לי כמה ימים רק לחשוב על אלגוריתם, ונשברתי מלא פעמים באמצע, בקיצור- לקח יותר מידי זמן להצליח] או למשל מערכת להצפנת קוד PHP , שזה לא כל כך פשוט כמו שזה נראה..
או מחלקות לעיבודים של תמונה- המרה לסוג JPEG, הקטנה של תמונות, שמירה על פורפורציות, יצירת מסגרות מעוגלות וכו'..

ובאופן אישי, אני לא ממליץ לך לנסות את זה, אתה לא בשל לזה.


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



אגב, לגבי בדיקת המשתמש- אומנם ענו לך פה יפה עם הפתרון, אבל לא לגמרי. זו הדרך בה אני הייתי בוחר לבדוק:
PHP קוד:
/**
 * Check id user is vaild
 *
 * @param string $username
 * @param md5 $password
 * @return TRUE if exits, or FALSE if not exits.
 */
function check_user($username=""$password="") {
    
$username     htmlspecialchars($usernameENT_QUOTES);
    
$username     mysql_real_escape_string($username);
    
    
$password     mysql_real_escape_string($password);
    
$query        ""
            
."SELECT count(*) as `avilable` FROM `prefix_users` WHERE \n"
            
."    `username` = '" $username "', \n"
            
."    `password` = '" $password "';";

    
$result        mysql_query($query) or die("<u>E</u>rror: " mysql_error());
    
$avilable    mysql_fecth_assoc($result);
    
$avilable    $avilable['avilable'];
    
    if(
$avilable>0) return true;
    else return 
false;

  Reply With Quote
ישן 18-02-09, 14:34   # 4
Adir
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Feb 2006
הודעות: 685
שלח הודעה באמצעות MSN אל Adir

Adir לא מחובר  

ציטוט:
נכתב במקור על ידי Baku צפה בהודעה
ובאופן אישי, אני לא ממליץ לך לנסות את זה, אתה לא בשל לזה.
למה לא ? ^^
מאיפה אתה יודע מה הידע והניסיון שלי?(אגב, אני לא פתחתי את האשכול הזה)
  Reply With Quote
ישן 18-02-09, 14:58   # 5
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

ציטוט:
נכתב במקור על ידי Adir|HomeServ.co.il צפה בהודעה
למה לא ? ^^
מאיפה אתה יודע מה הידע והניסיון שלי?(אגב, אני לא פתחתי את האשכול הזה)
לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..
  Reply With Quote
ישן 18-02-09, 15:40   # 6
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

ציטוט:
נכתב במקור על ידי Baku צפה בהודעה
לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..
אני מניח שאני לא אוכל לפתח מערכות ברמה.
מצד שני אני אומר לך שאני מסוגל לבנות כל מערכת ניהול, פורומים, בלוגים וכאלה, עם כי רוב הסיכויים שהיא לא תיהיה כל כך דינאמית ושהיא תיהיה לא כ"כ יעילה.
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
ישן 18-02-09, 15:55   # 7
Adir
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Feb 2006
הודעות: 685
שלח הודעה באמצעות MSN אל Adir

Adir לא מחובר  

ציטוט:
נכתב במקור על ידי Adir|HomeServ.co.il צפה בהודעה
למה לא ? ^^
מאיפה אתה יודע מה הידע והניסיון שלי?(אגב, אני לא פתחתי את האשכול הזה)
ציטוט:
נכתב במקור על ידי Baku צפה בהודעה
לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..
לא דיברתי עליו, דיברתי עלי
  Reply With Quote
ישן 18-02-09, 16:42   # 8
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

ציטוט:
נכתב במקור על ידי Adir|HomeServ.co.il צפה בהודעה
לא דיברתי עליו, דיברתי עלי
אני אל מכיר אותך, ולא את הידע שלך- הן ברמת קוד והן ברמת ניסיון.
אם אתה חושב שיש לך מספיק ידע וניסיון להתמודד עם דברים שהם קצת מעבר לבניית מערכות משולבות מסדי נתונים, לך על זה.
  Reply With Quote
ישן 18-02-09, 18:59   # 9
intercooler3819
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Jul 2008
הודעות: 1,056

intercooler3819 לא מחובר  

ציטוט:
נכתב במקור על ידי Baku צפה בהודעה
לפי הקוד שהוא הציג, והשאלות שהוא שאל. הסיכוי שהוא יצליח לפתח מערכת VirtualCron למשל היא מאוד נמוכה.. אלו מערכות מאוד מורכבות..
אממ תסביר לי מה הכוונה בVIRTUAL CRON..
קרון שלא תלוי בCRON TABS המובנים בלינוקס?

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

להת'

ניצן
__________________
  Reply With Quote
ישן 18-02-09, 19:39   # 10
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

VirtualCron זה שם למערכת קרון ג'ובס שלא תלויה במכונה שלך, במילים אחרות, קרון ג'ובס בPHP.

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

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 22:28.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ