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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
S

softs

@softs
אודות
פוסטים
271
נושאים
9
קבוצות
0
עוקבים
0
עוקב אחרי
0

פוסטים

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

  • טריגר לשמירת הסטוריה ב MS-SQL
    S softs

    קודם כל אקדים ואומר שזה מתבסס על הנחת יסוד שיש לך בטבלה שדה אחד שהוא ה KEY והוא מוגדר כ IDENTITY
    כמובן שמי שעובד אחרת יכול להתאים את הקוד לשיטה שבה הוא עובד

    מטרת הקוד היא ליצור טיפול בשמירת הסטוריה ברמת ה DB ולהשאיר את הקוד "נקי" מהכאב ראש הזה
    (כמובן שלמי שיש SQL ENTERPRISE יש CDC ומומלץ להשתמש בו)

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

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

    CREATE PROC CreateTableTriggers (@Table NVARCHAR(MAX)) AS
    	
    	SET NOCOUNT ON
    	
    	DECLARE @CName AS NVARCHAR(MAX)
    
    	DECLARE @TName AS NVARCHAR(MAX)
    
        DECLARE @TCol AS TABLE(name NVARCHAR(MAX), typ NVARCHAR(max))
    
        INSERT INTO @TCol
    	Select C.name,T.name from sys.columns C inner join sys.types T ON T.user_type_id = C.user_type_id where Object_id(@Table) = object_id AND C.user_type_id <> 165
        
    	DECLARE @Key AS NVARCHAR(MAX) = (SELECT TOP 1 name FROM sys.columns where Object_id(@Table) = object_id and is_identity = 1)
    
    	DECLARE @sSQL AS NVARCHAR(MAX) = 
    	'
    	CREATE TRIGGER {Table}History ON {Table} AFTER UPDATE, INSERT, DELETE AS
    
    	SET NOCOUNT ON
    	INSERT INTO H_{Table}
        SELECT GETDATE(),I.{KEY},''Object'',I.{KEY},'''', ''I'' FROM INSERTED I LEFT JOIN DELETED D ON D.{KEY} = I.{KEY} WHERE D.{KEY} IS NULL
        UNION
        SELECT GETDATE(),D.{KEY},''Object'',D.{KEY},'''', ''D'' FROM DELETED D LEFT JOIN INSERTED I ON D.{KEY} = I.{KEY} WHERE I.{KEY} IS NULL
    	'
     
        DECLARE col_cur CURSOR FOR SELECT name, typ FROM @TCol    
        OPEN col_cur
        
    	FETCH NEXT FROM col_cur INTO @CName,@TName
    		
        WHILE @@FETCH_STATUS = 0
        BEGIN
    		
    		DECLARE @Compare AS NVARCHAR(MAX)
    		 
    		IF (@TName IN ('int','decimal','numeric','bigint'))
    			SET @Compare = 'ISNULL(D.{Col},0) <> ISNULL(I.{Col},0)'
    		ELSE
    			SET @Compare = 'ISNULL(D.{Col},'''') <> ISNULL(I.{Col},'''')'
    
    	    SET @sSQL +=
    		REPLACE('
    		INSERT INTO H_{Table}
    		SELECT GETDATE(),I.{KEY},' + '''{Col}''' + ',D.{Col},I.{Col}, ''U'' FROM DELETED D INNER JOIN INSERTED I ON D.{KEY} = I.{KEY} WHERE ' + @Compare + ' 
    		','{Col}',@CName)
            
            FETCH NEXT FROM col_cur INTO @CName,@TName
            END
    
        CLOSE col_cur
        DEALLOCATE col_cur
    	
    	DECLARE @sDropSQL AS NVARCHAR(MAX) = REPLACE('IF OBJECT_ID (''{Table}History'',''TR'') IS NOT NULL
    		DROP TRIGGER {Table}History','{Table}',@Table)
    
    	EXEC(@sDropSQL)
    
        DECLARE @sTableSQL AS NVARCHAR(MAX) = REPLACE('
    	    IF OBJECT_ID (''H_{Table}'') IS NULL
    		CREATE TABLE H_{Table}
    		(			
    			ChangeDate DATETIME NULL,
    			[Key] INT,
    			ColumnName NVARCHAR(100) NULL,
    			OldValue NVARCHAR(MAX) NULL,
    			NewValue NVARCHAR (MAX) NULL,
    			Action NVARCHAR (1)
    		)
    		','{Table}',@Table)
    
    	EXEC(@sTableSQL)
    
    	SET @sSQL = REPLACE(@sSQL,'{Table}',@Table)
    	SET @sSQL = REPLACE(@sSQL,'{KEY}',@Key)
    	
    	EXEC(@sSql)
    

    פורסם במקור בפורום CODE613 ב25/08/2014 17:25 (+03:00)


  • פקדי תאריך עברי לדוט נט
    S softs

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

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

    תכולה :
    MonthView תצוגת לוח שנה - מציג עברי ולועזי יחד.
    תחליף ל Date Time Picker (בלחיצה מתשנה התצוגה עברי/לועזי, אפשרות לניקוי הערך (מה שאין בדוט נט), ולחצן שפותח חלון בחירת תאריך).
    עמודת תאריך עברי ל DataGridView שלמעשה עוטפת את ה DateTimePicker שיצרתי (תאמינו לי חתיכת סיוט).

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

    HebDate.rar

    פורסם במקור בפורום CODE613 ב14/08/2014 14:24 (+03:00)


  • פרטי בנק של לקוח בטבלה נפרדת או בטבלת לקוחות?
    S softs

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

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

    פורסם במקור בפורום CODE613 ב01/07/2014 11:25 (+03:00)


  • יצירת טבלאות ראי עם טריגר
    S softs

    רבותי דיינים מומחים, יש פתרון פשוט :

    IF ((
    SELECT TRIGGER_NESTLEVEL()) > 1 )
    RETURN
    

    וזה מונע הפעלה של טריגר מתוך טריגר בכל ה DB:

    EXEC sp_configure 'show advanced options', 1
    GO
    RECONFIGURE
    GO
    EXEC sp_configure 'nested triggers', 0
    GO
    RECONFIGURE
    GO
    

    פורסם במקור בפורום CODE613 ב23/06/2014 11:32 (+03:00)


  • בעיה הנראית כמו התנגשות במרחב שמות בדוט נט
    S softs

    נוסף על דברי דוד ל.ט.

    יש דרך לייבא את שניהם ועדיין לא לרשום את הנתיב המלא ע"י יצירת ALIAS
    לדוגמה

    using reg = System.Text.RegularExpressions;
    using utl = Microsoft.Internal.Web.Utils;
    

    כך אפשר לייבא את שניהם כל אחד עם שם שונה ובמקום הנתיב המלא להשתמש ב reg או utl
    תקף גם ל VB
    נ.ב. הקוד להמחשה בלבד

    פורסם במקור בפורום CODE613 ב22/06/2014 17:55 (+03:00)


  • קבלת אימייל בקוד
    S softs

    @דוד ל.ט.

    @softs

    מן הסתם זה ילך ל TRASH ולא ממש יימחק והרווחת שזה לא יופיע יותר

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

    צודק, צריך לבדוק כל שרת לגופו.

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

    עוד נקודה חשובה, למי שמממש את הפתרון של לשמור UniqueID בצד CLIENT, צריך לשים לב שיכול להיות אותו UniqueID לשני הודעות עם הבדל בcasing, לכן אם שומרים ב SQL צריך להגדיר את השדה על COLLATION שהוא CS וגם בקוד לשים לב לזה

    פורסם במקור בפורום CODE613 ב25/02/2015 11:15 (+02:00)


  • SQL: שאילתה שתחזיר רשומות מספרים או תאריכים מתוך טווח נתון
    S softs

    OK זה נראה שאני היחיד שמכיר - ויש לי טריקים נוספים אפילו . . . <!-- s8-) --><img src="{SMILIES_PATH}/icon_cool.gif" alt="8-)" title="מגניב" /><!-- s8-) -->

    אגב שלא תגידו שלא אמרתי - התכונה הזו כמעט בת עשר (מ 2005) . . .

    ואני הקטן אנסה להסביר:
    הגדרה של CTE עשית על ידי שימוש במילה WITH כמו בדוגמה
    היא מגדירה למעשה VIEW זמני שקיים רק עד אחרי שמתשאלים אותו פעם אחת ואז נעלם
    תכונה ייחודית שלו היא שאפשר לקרוא ל VIEW מתוך עצמו מה שלמעשה הופך אותו לבעל יכולת רקורסיבית
    מעבר לכך הכל פועל כמו שאילתה רגילה
    בשורה הראשונה אתה למעשה בוחר את השורה הראשונה שלך ואז ב UNION מחבר אליה את הבאות בתור
    לפי הלוגיקה שלך לדוגמה אם בחרת יום מסוים תרצה לחבר אליו את היום הבא או הקודם וכו'
    דבר נוסף שצריך לשים לב לשים TERMINATOR כמו בכל רקורסיה, אחרת ב 100 הוא עף או שמגדירים MAX RECURSION גדול יותר מ100
    במקרה של הדוגמה שהובאה >5 זה הטרמינייטור

    אחד הדברים המגניבים שזה משמש הוא עבור שליפת עץ מטבלה שטוחה ושרשור הנתיבים של העלים

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

    WITH cte (ID,MID,path) AS
    (
    SELECT [EmployeeID],[ManagerID], CAST([First Name] + ' ' + [Last Name] AS NVARCHAR(MAX))
    FROM Employees WHERE [ManagerID] IS NULL
    
    UNION ALL
    
    SELECT [EmployeeID],[ManagerID],
    CAST(path + '\' + [First Name] + ' ' + [Last Name] AS NVARCHAR(MAX))
    FROM Employees INNER JOIN cte ON ID = [ManagerID]
    )
    
    SELECT * FROM cte
    

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

    פורסם במקור בפורום CODE613 ב30/07/2014 23:17 (+03:00)


  • עבודה משותפת ב Visual Studio
    S softs

    @םןץףך

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

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

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

    פורסם במקור בפורום CODE613 ב26/10/2017 11:44 (+03:00)


  • עבודה משותפת ב Visual Studio
    S softs

    @ClickOne

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

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

    פורסם במקור בפורום CODE613 ב26/10/2017 11:37 (+03:00)


  • עבודה משותפת ב Visual Studio
    S softs

    @avr416

    בד"כ מומלץ שכל אחד יעבוד על ענף (בראנץ) נפרד, ולא על המאסטר, ואח"כ כשאתה מסיים פיצ'ר אתה משלב אותו במאסטר.

    נשמע לי עקום לגמרי, מעולם לא שמעתי שעובדים כך, מה שיכול לקרות במצב כזה זה ששתי אנשים יכולים לעבוד בו זמנית על אותו קובץ, בלי לדעת אחד מהשני, שזה הדבר הכי חשוב שזה בא למנוע.
    ה"מאסטר" הוא לא קדוש, בדיק בשביל זה יש Version Control, כשעובדים על פיצר עושים את כל השינויים לוקלית עד ה Check In, מקסימום אפשר לעשות Shelve שלא יאבדו השינויים הלוקליים אם הולך המחשב).

    אני אסבר ב 2 מילים איך אני מכיר עבודה עם ה TFS:
    מעלים את הפרוייקט ל TSF על ידי קליק ימני על הפרוייקט Add to Source Control ובוחרים מיקום יחסי בתיקיות על השרת.
    מי שרוצה לעבוד על הפרוייקט, נכנס ל Tfs Explorer ומושך את כל הקבצים, (Get Latest Version), לתיקיה מקומית.
    כשאתה מתחיל לערוך קובץ הקובץ הזה נתפס לעריכה אצלך (Check Out) וכל משתמש אחר יראה לוגו של איש קטן על הקובץ, וכך ידע שפלוני כעת עובד על הקובץ.
    כשסיימנו לערוך, עושים Check In והקובץ מתעדכן בשרת בגירסתו המעודכנת.
    מכאן יש המון פרטי פרטים, מה קורה אם מישהו בכל זאת עורך קובץ במקביל (עושים MERGE ידני), מה קורה אם אני רוצה לחזור אחורה (Get Specific Version), וכו.

    פורסם במקור בפורום CODE613 ב21/10/2017 23:57 (+03:00)


  • אתר רספונסיבי
    S softs

    אני אוהב את framework7
    פשוט ועובד
    אבל יש בטח עוד אופציות

    פורסם במקור בפורום CODE613 ב19/06/2017 14:43 (+03:00)


  • אקסס - לאן? והאם נחלת העבר.
    S softs

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

    פורסם במקור בפורום CODE613 ב04/07/2017 18:36 (+03:00)


  • שדה מסוג TEXT
    S softs

    אם ה db שלך תחליף את ה text ב nvarchar max - הרבה יותר יעיל
    אם אין לך שליטה על זה תעשה לו cast ל nvarchar

    פורסם במקור בפורום CODE613 ב25/08/2016 14:08 (+03:00)


  • שליפת נתונים מבנקים
    S softs

    API זה חלום רחוק אבל בהצלחה עם זה: https://www.bankapp.co.il/api
    בעולם המציאות תוריד ב NUGET את SELENIUM ותעשה סימולציה של פעולת המשתמש

    פורסם במקור בפורום CODE613 ב07/08/2016 13:54 (+03:00)


  • שימוש בפרמטרים לצורך create login
    S softs

    שרשר את הפקודה לסטרינג nvarchar ותריץ עם exec

    פורסם במקור בפורום CODE613 ב24/07/2016 09:04 (+03:00)


  • @@IDENTITY
    S softs

    בסוף השאילתה במקום סלקט על המשתנה @@identtity אתה יכול לבצע select max מטבלת האבות או כל סלקט אחר שיביא לך את התוצאה הרצויה

    פורסם במקור בפורום CODE613 ב24/07/2016 00:29 (+03:00)


  • חידוש הפורום
    S softs

    וכבר אמרו חכמים
    if it ain't broke, don't fix it

    פורסם במקור בפורום CODE613 ב17/07/2016 21:35 (+03:00)


  • קיבוץ וסכימה לפי שני שדות
    S softs

    נא להיות קונסיסטנטיים גם בטעויות
    HUOR != HOUR :?
    אני מסוג האנשים שפותחים עיתון ועוד לפני שקוראים את התוכן דוקרות להם מיד בעין שגיאות הכתיב (לא דקדוק..)

    פורסם במקור בפורום CODE613 ב14/07/2016 00:45 (+03:00)


  • המצאת שפת שאילתות חדשה
    S softs

    כל שפה לתחקור מסדי נתונים רלציוניים חייבת להיות מבוסת על ההגיון שבמבנה הרלציוני קרי אלגברה רלציונית
    שוב אני חוזר לקורס האלמותי שאני ממליץ עליו ...
    https://lagunita.stanford.edu/courses/DB/2014/SelfPaced/about - לבחור למטה relational algebra
    יהיה מי שיתלונן שזה דורש רישום, מצד שני זה קורס של אוניברסיטת סטנפורד וזה הכי קרוב שמישהו מאיתנו יגיע לפיסת השכלה ברמה הזו...

    פורסם במקור בפורום CODE613 ב14/06/2016 23:56 (+03:00)


  • ייעוץ-בניית אתר לגמחים וכדו'
    S softs

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

    אני חושב שאין חולק ש node.js כל כך פשוט שזה לא יאומן ועקומת הלמידה טובה.

    יש מקרים מסוימים שבהם הוא מועדף ויש מקרים שבהם הוא קוץ בעין (למה גישה לקובץ בדיסק צריכה להיות אסינכרונית???)
    עיינו כאן:
    http://voidcanvas.com/describing-node-js

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

    פורסם במקור בפורום CODE613 ב23/05/2016 23:21 (+03:00)

  • 1 / 1
  • התחברות

  • אין לך חשבון עדיין? הרשמה

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