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

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

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

חוקר

@חוקר
אודות
פוסטים
1.2k
נושאים
199
קבוצות
0
עוקבים
5
עוקב אחרי
0

פוסטים

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

  • הורדת קבצים מגוגל דרייב (הפרטי) באמצעות google api על ידי nodejs
    ח חוקר

    יצא לי להתעסק עם זה לאחרונה וראיתי שזה היה חתיכת כאבי ראש והרבה יותר
    אני משחזר כאן את סדר הדברים כמיטב זכרוני, בתקוה שיביא תועלת למישהו.
    ראשית יש להרשם וליצור פרוייקט חדש כאן
    לאחר מכן להכנס לדשבורד של הפרוייקט
    1e07fbbb-dfcf-47f1-a440-276eaefd87ac-image.png
    לאחר מכן יש צורך להוסיף את שירותי דרייב
    נכנסים ל ENABLE APIS AND SERVICES
    2d536574-6913-47e1-9f1e-f930fafd18bf-image.png
    מחפשים את שירות הדרייב
    10e40fd1-1c67-4685-820c-9c2c7476c0a3-image.png
    לוחצים על הפעל - ENABLE
    80e03330-f256-4280-8cf4-7bfc79ed3a5c-image.png
    לאחר מכן יש להוסיף הרשאות לגישה לסקופ של גוגל דרייב, ואח"כ ליצור קובץ אישורים, ועל כך בסרטון המצורף (כבר אין לי כח לכתוב..)
    https://drive.google.com/file/d/15Vwi5_Jd6dMGEjT2zwXKx2CojxPt3bg6/view?usp=sharing
    או ביוטיוב (פתוח בנטפרי)

    לאחר מכן יש להשים את הקובץ עם האישורים לתיקיית העבודה
    ולשנות את שמו ל credentials.json.
    וכעת לחלק של node יש להתקין את הספריה של גוגל כפי ההוראות כאן,
    ובקיצר דהיינו להתקין כך npm install googleapis@39 --save
    לאחר מכן נמשיך לשלב 2 בהוראות הנ"ל של גוגל, אך לפני ההרצה יש לשנות את שורה

    const {client_secret, client_id, redirect_uris} = credentials.installed;
    

    ל

    const {client_secret, client_id, redirect_uris} = credentials.web;
    

    בנוסף כדי שיהיה לנו באישורים גם הרשאת גישה להורדת קבצים וכו' ולא רק רשימת הקבצים, שיניתי את שורה

    const SCOPES = ['https://www.googleapis.com/auth/drive.metadata.readonly'];
    

    ל

    const SCOPES = [
        'https://www.googleapis.com/auth/drive',
        'https://www.googleapis.com/auth/drive.file',
        'https://www.googleapis.com/auth/drive.readonly',
        'https://www.googleapis.com/auth/drive.metadata.readonly',
        'https://www.googleapis.com/auth/drive.appdata',
        'https://www.googleapis.com/auth/drive.metadata',
        'https://www.googleapis.com/auth/drive.photos.readonly',
    ];
    

    רק לאחר מכן ניתן להריץ את הקובץ index.js עם הפקודה

    node .
    

    כמופיע בהוראות
    אני העתקתי את הלינק שקיבלתי בקונסול ופתחתי אותו בדפדפן
    נפתח לי דף לאשר גישה לאפליקיצה (ושהיא רק בבדיקה וכו')
    יש להקפיד לאשר את זה מאותו חשבון שרשמנו בפרוייקט כחשבון בעל הרשאת גישה.
    השרת של גוגל יפנה אתכם לכתובת שרשמנו עם משתנים נוספים
    http://localhost:3000/oauth2callback?code=4/gsfdgfsdgfdshjuyODo5wjo9KUpYJ1-Q&scope=https://www.googleapis.com/auth/drive https://www.googleapis.com/auth/drive.file https://www.googleapis.com/auth/drive.readonly https://www.googleapis.com/auth/drive.metadata.readonly https://www.googleapis.com/auth/drive.appdata https://www.googleapis.com/auth/drive.metadata https://www.googleapis.com/auth/drive.photos.readonly

    יש לחלץ את הערך של code ולהדביק אותו בקונסולה של node שהפעלנו.
    כעת ההרשאות אומתו וניתן לגשת להורדת קובץ וכו'.
    דוגמא להורדת קובץ שעבד לי
    https://stackoverflow.com/a/56724621

    מקוה שיעזור למישהו
    בהצלחה


  • קבוצת התכנות הסגורה
    ח חוקר

    ברכותי ואיחולי על פתיחה מחדש של פורום תכנות.
    עדיין לא לגמרי הבנתי את המהלך שנעשה, ר' @dovid מחכים למוצא פיך.
    לכתחילה לא הגבתי עד כה בנושא כי סמכתי ש @dovid היקר יחזור ויפתח את זה וכמובן יוביל את הפורום למהלך הנכון לעשות.
    אני לא יודע מי צריך את הפורום יותר הוא אנחנו, אבל מה שבטוח שלכולם יש תועלת לאין ערוך מזה.
    בנימה אישית לולי הפורום ייתכן שעדיין הייתי תקוע ב PHP וקצת HTML.
    ב"ה מכאן למדתי שפות נוספות, פריימוורקים וצורות עבודה, שזה לא רק קניין של מה שלמדתי אלא זה מהלך לפרוץ גבולות ולדעת להגיע למה שצריך.
    ברור שהיה אווירת אימייש כשהפורום סגור, ניתן להרגיש יותר חופשי לכתוב שאלות על פרוייקט בצורה פתוחה, ניתן לכתוב בנימה אישית על התמודדות עם שאלות הלכתיות של הונאה, וניתן לכתוב רגשות של שילוב עבודה בתחום עם אורח חיים של אברך ועוד.
    @dovid מחכים למוצא פיך מה הבנת שנכון לעשות.
    תודה רבה!

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


  • בירור | עבודה בתחום התכנות
    ח חוקר

    @chv אמר בבירור | עבודה בתחום התכנות:

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

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

    @chv אמר בבירור | עבודה בתחום התכנות:

    חשוב להבין שברגע שאתה מגיע למצב שהבוס צריך אותך

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

    @chv אמר בבירור | עבודה בתחום התכנות:

    אני התחלתי להתעסק עם תיכנות לפני כשנה וחצי להשערתי. אני מתכנת מתחיל?

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

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


  • מחפש משרה למתכנתת מוכשרת בהפרדה מלאה
    ח חוקר

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

    להלן פירוט קצר של ההשכלה:
    Technical Skills
    Frameworks: Visual Studio, Pycharm, PLSQL, .Net, Rhapsody.
    Software languages: C++, C, Python, C#, Assembler.
    Databases: MongoDB, SQL.
    Tools: Git, working in collaboration in Github.
    Self-study (basic knowledge) : Django, HTML, CSS, Java Script, React.
    OS: Windows, Linux.
    Languages
    Hebrew - Native | English - High level of reading, writing and speaking.

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


  • פתיחת פורט בWIN10 (עבור RDP)
    ח חוקר

    @davidnead
    לא הבנתי למה אתה צריך לשנות את זה במחשב ולא בראוטר
    אני משתמש ג"כ באותו ראוטר לשני מחשבים ובהפניית פורטים בראוטר הגדרתי שפורט XXXX יפנה ל 10.0.0.1 לפורט 3389 ופורט YYYY יפנה ל 10.0.0.2 לפורט 3389 והכל תקין
    ואם אתה רוצה להתחבר ממחשב אחד לשני ברשת הפנימי מספיק לציין את שם המחשב ולא צריך בכלל לעבור דרך הפורטים


  • מעבר לGO למה? איך? ומתי?
    ח חוקר

    @nigun
    ראשית, לעבור שפה, כל זמן שלא הבנת לעומק את ההבדל בין השפה הקודמת לחדשה, ואתה מגיע עם תפיסות שאת זה עושים כך, ואת זה עושים כך וכו', ולא הבנת מהו התחביר והרעיון שעומד מאחורי השפה החדשה, זה מאוד קשה להבין איך עושים פעולות מורכבות בשפה החדשה, אבל אחרי שנהיה הקליק בעזה"י, רואים פה ושם דוגמאות קוד ומהלכי עניינים, ומבינים את צורת העבודה, אתה כבר יודע לתכנן איך לכתוב את הקוד, יודע איך לגלגל ולחפש (כמובן לפני ששואלים כאן מותר לחפש האם מישהו כבר הסביר איך עושים את זה באיזה מקום אחר ברשת), והכל יותר קליל.
    א. בנוד, האפליקציה/השירות הוא תהליך, ויש לך ברירה או שאתה כותב את כל המערכות שלך תחת אפליקציה אחת, או לכל דבר תהליך נפרד, זה נראה לי עדיין קצת מסובך, בשביל שרת שנותן שירות פשוט של באם הקשת X הוא ישמיע Z ואם Y הוא ישמיע E, נראה לי יותר קל קוד PHP קטן מרוכז בסקריפט אחד ויש לך שליטה מלאה, ולא צריך להפעיל מחדש את תהליך הנוד המרכזי עבור כל שינוי.
    אם כי באם זה כבר דורש חיבור לבסיס נתונים, ובעיקר אם יהיו שאילתות נתונים שחוזרים על עצמם, אני יעדיף לכתוב את זה בנוד.
    (כנראה שאצור תהליך חדש עבור כל השירותים החדשים, בצורה שאוכל בקלות לבנות אותה בהתאמה להוסיף מערכות ושירותים בקלות.
    ב. הלוואי והיה לי זמן להתאמן, זה היה בשביל ישיבה על קברו, וכחלק מהמעבר של ישיבה על קברו מPHP לנוד, וע"י האי-/סינכרוני (לא זוכר מה נכון לכתוב) זה מבוצע במקום בדיקה של 2 דקות בPHP, מבוצע ב כעשר שניות בנוד. (התהליך הוא בדיקה על כל מסלול האם קיימים כל השאלות והתשובות בימות המשיח).
    ג. ב"ה אני 2 סדרים בכולל, ולכן אין לי כ"כ זמן, זה הסיבה. לימוד שפה, דורש זמן, אבל בדר"כ זה לא מחייב זמן על חשבון עבודה, כי את הלימוד התיאורטי ניתן לעשות כשאתה בין כך לא מרוכז וכו', והלימוד המעשי אתה מתחיל באמת לבנות את המערכת ואתה מתחיל להתקדם.
    אני לא יודע מה לומר על גו כל זמן שלא ניסיתי את זה, אבל בהחלט בנוד אחרי שהבנתי את הרעיון, אני כבר עובד מראש עם פרומיס, והכל מסודר בצורה שזה לא משנה ולא מפריע זה שזה א-סינכרוני.
    ולסיום, לפי הראש שלי, לימוד תיאורטי של קריאת מדריכים של סתם פונקציות ורעיונות בשפה, מומלץ כשאתה לא מרוכז, וזה נותן לך פה ושם תובנות נוספות על השפה, אבל הכי טוב זה להגיע עם תוכנית ברורה של שירות שאתה רוצה להפעיל, ולחפש ולגלגל איך להתקדם ולקדם את זה! (ייתכן ואחרים ניגשים אחרת, כל אחד והטבע והראש שלו).
    אאחל לך הצלחה במה שתחליט!


  • הפעלת PM2 עם הגדרת פורט להפעלת תהליך ה node
    ח חוקר

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

    var port = parseInt(process.env.PORT)||3030;
    
    server.listen(port);
    

    ניתן להפעיל אותו ע"י נוד כך

    PORT=3080 node app.js 
    

    או ע"י pm2 כך:

    PORT=3080 pm2 start app.js 
    

    וכדי לשנות פורט בpm2 יש להפעיל כך:

    PORT=3081 pm2 restart app.js --update-env
    

    וכדי לאפס את הפורט שיהיה הברירת מחדל ששמנו 3030

    PORT= pm2 restart app.js --update-env
    

    כך עבד לי הכל ב"ה


  • שאלות של מתחיל - מקצועי ב nodejs
    ח חוקר

    תודה רבה לכל אלו שעזרו וסייעו
    @david @יוסף-בן-שמעון @אהרן @magicode @clickone
    מקוה שלא פיספסתי מישהו.
    ב"ה הייתה התקדמות משמעותית היום, השלמתי בניית מערכת שעובדת בצורה חלקה, כמובן בעזרתכם.
    עדיין לא גמרתי, אני לא למדתי עדיין מספיק את השפה, אבל כבר היה מספיק בסיסי כדי לעשות משהו שזז באמת..
    במיוחד תודה ל @magicode על הדוגמה הראשונה שנתן, זה נתן לי פריצת דרך רצינית, וכן לימדה אותי פרק נוסף בנושא.
    וכן ל @david שדחף אותי להיכנס לזה..
    תודה

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


  • שאלות של מתחיל - מקצועי ב nodejs
    ח חוקר

    @חוקר אמר בשאלות של מתחיל - מקצועי ב nodejs:

    הכל ע"י סיעתא דשמיא.

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

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

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


  • בסיסי נתונים למתכנת המתחיל
    ח חוקר

    אני דווקא התחלתי מלבנות מערכות בימות המשיח (בעצם קצת עם אפליקציות של סידור וקשקושים של רשימת אנש בHTML) ומשם ל-PHP ו-MYSQL.
    באקסס אני 0 לא יודע שום כלום.
    נראה לי שהביצועים שלי הם גבוהים (התחום שלי הוא מערכות טלפוניות בימות המשיח ע"י API).
    ישנם הרבה מדירכים ברשת כמו רשתטק ואיתן ואינטרנט ישראל שמהם לקחתי את המידע.
    אין מה לחשוש לקפוץ למים


  • למה אני לא משתמש ב Chat openai
    ח חוקר

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


  • JS תיבת תפריט בחירת תאריך משולב עברי ולועזי
    ח חוקר

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

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>jQuery UI Datepicker - Default functionality</title>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
        <link rel="stylesheet" href="dwachss-flexcal/flexcal.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
        <script src="dwachss-flexcal/jquery.textpopup.js"></script>
        <script src="dwachss-flexcal/jquery.flexcal.js"></script>
    
        <script>
    
        </script>
    </head>
    <body dir="rtl">
    
    <p>תאריך: <input type="text" id="date2"></p>
    
    
    <script >
        $('#date2').flexcal({
            position: 'lt',
            calendars: [
                ['he-jewish', 'עברי', {dateFormat: 'yyyy-mm-dd',titleText: 'בחר תאריך'}],
                ['he', 'לועזי', {
                    closeText: 'סגור',
                    prevText: '&#x3C;הקודם',
                    nextText: 'הבא&#x3E;',
                    currentText: 'היום',
                    monthNames: ['ינואר','פברואר','מרץ','אפריל','מאי','יוני', 'יולי','אוגוסט','ספטמבר','אוקטובר','נובמבר','דצמבר'],
                    monthNamesShort: ['ינו','פבר','מרץ','אפר','מאי','יוני', 'יולי','אוג','ספט','אוק','נוב','דצמ'],
                    dayNames: ['ראשון','שני','שלישי','רביעי','חמישי','שישי','שבת'],
                    dayNamesShort: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
                    dayNamesMin: ['א\'','ב\'','ג\'','ד\'','ה\'','ו\'','שבת'],
                    isRTL: true,
                    titleText: 'בחר תאריך',
                    dateFormat: 'yyyy-mm-dd'}
                ]
            ],
            commit: function(e, d){
                console.log(d);
                let formattedDate = $('#date2').flexcal('format', d);
                alert(formattedDate)
            },
            buttons: ['today commit']
        });
    </script>
    
    </body>
    
    </html>
    

    בנוסף הורדתי מהמקור את תיקיית הקוד
    https://codeload.github.com/dwachss/flexcal/legacy.zip/master
    ובקובץ dwachss-flexcal/flexcal.css שיניתי והוספתי בשורה 62 שורה נוספת עבור מרכוז הכותרת של החודש

    .ui-flexcal caption.ui-datepicker-header {
    	line-height: 1.52em; /* to align with the prev/next buttons */
    	text-align: center;//השורה הנוספת
    }
    

    וכן בקובץ jquery.flexcal.js בשורה 697 שיניתי את המילה 'Today' למילה 'היום'
    וכעת ב"ה זה נטען מהר ועובד חלק.
    @שמואל לגבי טענתך על הפורמט, בדקת שימוש עם הפרמרט dateFormat? כי לא כ"כ הבנתי איפה בדיוק בעייתך.


  • ירידת שורה באקסל מבלי למזג תאים
    ח חוקר

    @zvinissim אמר בירידת שורה באקסל מבלי למזג תאים:

    @מלא אמר בירידת שורה באקסל מבלי למזג תאים:

    F2 חוסך לחיצה כפולה וend

    @מלא אתה לא יודע כמה חסכת לי עכשיו עבודה. אין יום שאני לא מתעסק עם טבלאות וכל פעם אני עושה את הפעולה הזו.
    תמיד עשיתי "לחיצה כפולה ו-End"

    בקיצור: שלחתי אתונות וקיבלתי מלוכה

    ומקבלין דין מן דין, היה שווה לך לחזור לפורום..


  • האם באמת צריך ללכת ללימודי תואר כדי להיות מתכנת?
    ח חוקר

    @nigun אמר בהאם באמת צריך ללכת ללימודי תואר כדי להיות מתכנת?:

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

    כמוני כמוך.
    אני לא למדתי תכנות בשום מקום חוץ מברשת ולראות קוד של אחרים.
    עיקר התחום שלי כיום הוא PHP בעבודה עם API מול ימות המשיח. וב"ה אני רואה הצלחה בתחום זה.
    אפילו אנגלית אני ממש לא יודע, ואפילו את מילות המפתח של תכנות שכבר למדתי לכתוב אותם בע"פ (דוגמת echo ב PHP) אני לא יודע לאיית אותם נכון באנגלית.
    הנקודה היא בעיקר כמו שכתבת, כל זמן שבאים ללמוד לבד דברים תאורטיים, קשה ללמוד לבד, אבל כשאתה יודע במה להתמקד, אתה מחפש ברשת ובפורומים ולומד מזה.
    ואני כמעט בטוח שכל אלו שלמדו לבד לקח להם הרבה זמן עד שהגיעו לרמה מקצועית, (לדוגמה, המדריכים ברשת של חיבור PHP ל MYSQL מלמדים את התהליך האמיתי, בעוד שעם הזמן אתה מבין שעליך לבנות מחלקה שתטפל לך בחיבור לד"ב).
    כהיום קשה לי להסתכל על הקודים שכתבתי בתחילת הדרך, מלאים שגיאות ועבודה כפולה ללא מחלקות ופונקציות שמבצעים פעולות שחוזרות על עצמם וכו', אבל אם לא הייתי מתחיל אז ברמה ההיא לא הייתי מגיע לרמה המקצועית.
    מי שרוצה להתחיל מיד ברמה מקצועית ותיקנית, מסתבר שעדיף לו ללמוד לפחות בקורס, מי שמספיק לו להתחיל עם קוד שעושה את הפעולה (עם הגדרת התעלמות משגיאות...), ובנוסף יש לו את התפיסה המהירה במבנה מה שמאחורי הקלעים של כל תוכנה, מסתבר שיספיק לו ללמוד לבד.


  • פרק שירה לימי הפורים בתקופת הקורונה
    ח חוקר

    משנכנס אדר מרבים בשמחה..
    פרק שירה בימי הקורונה.pdf


  • API לפתיחת וסגירת פורט 3389 לRDP לעולם החיצוני באמצעות PHP
    ח חוקר

    יצרתי לעצמי API שאני יכול ממחשב מרוחק לגשת לIP (הקבוע) של המחשב שלי ולפתוח לעצמי פורט שיחובר לפורט 3389 עבור חיבור לשולחן עבודה מרחוק.
    הרעיון הוא שכל הזמן אין פורט שמופנה לRDP, ורק בעת הצורך פותחים או סוגרים את החיבור
    זה נועד לתוספת אבטחה.
    להלן הקוד
    זה נכתב בהתאם לראוטר D-LINK 225
    הרעיון הוא שעבור פתיחת פורט ניגשים לכתובת של הדף
    http://31.31.31.31/openport.php?action=open
    ועבור הסגירה ניגשים כך
    http://31.31.31.31/openport.php
    כמובן יש לשנות לכתובת הIP הנכון
    וכן להשים את שם הקובץ בו שמרתם את הקוד
    וכן יש לוודא ששמתם את שם המשתמש והסיסמא הנכונים של הראוטר
    וכן לוודא שהמחשב המארח נמצא בכתובת 10.0.0.1 או להחליף בקוד לכתובת הנכונה
    ניתן לשנות את הפורט המאזין לכל פורט אחר כמובן

    <?php
    
    $username = 'Admin';
    $pass = 'Admin';
    
    $header = 'Content-Type: application/x-www-form-urlencoded'.
        "\r\n" . 'Cookie: username=' . $username . '; password=' . $pass . '';
    
    $opts = array('http' =>
        array(
            'method'  => 'GET',
            'header'  => $header,
            'follow_location' => false
        )
    );
    
    $context  = stream_context_create($opts);
    
    $Login = file_get_contents('http://10.0.0.138/login.cgi?web_login_name=' . $username . '&web_login_pass=' . $pass . '&loginfo=on&loginId=Login', FALSE, $context);
    
    $form = file_get_contents('http://10.0.0.138/scvrtsrv.html', FALSE, $context);
    $form = explode('&sessionKey=', $form);
    $sessionKey = explode("'", $form[1])[0];
    //print_r($sessionKey);
    $eStart = '5546'; //תחילת פורט נכנס
    $eEnd = '5546'; //סיום פורט נכנס
    $iStart = '3389';
    $iEnd = '3389';
    if (isset($_GET['action']) && $_GET['action'] == 'open') {
        $open = 'http://10.0.0.138/scvrtsrv.cmd?action=add&srvName=RDP&dstWanIf=ppp1.1&srvAddr=10.0.0.1&proto=1,&eStart=' . $eStart . ',&eEnd=' . $eEnd . ',&iStart=' . $iStart . ',&iEnd=' . $iEnd . ',&sessionKey=' . $sessionKey;
        $open2 = file_get_contents($open);
        print_r($open2);
    } else {
        $delete = 'http://10.0.0.138/scvrtsrv.cmd?action=remove&rmLst=10.0.0.1|' . $eStart . '|' . $eEnd . '|TCP|' . $iStart . '|' . $iEnd . ',&sessionKey=' . $sessionKey;
        $delete2 = file_get_contents($delete, FALSE, $context);
        print_r($delete2);
    }
    
    $LogOut = file_get_contents('http://10.0.0.138/logout.cgi', FALSE, $context);
    

  • תמחור פרוייקט
    ח חוקר

    @chagold אמר בתמחור פרוייקט:

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

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

    אבל לדעתי ודאי שיש מושג של מקצועיות ששווה כסף, דוגמא פשוטה, בימות המשיח יש שלוחה של קבלת נתונים, כל אחד שמתמצא בימות כמו שצריך יכול לבנות שלוחת ההרשמה וייקח על זה מאתיים שקלים, והדוחות יצאו בקבצי HTML או YMGR (למי שמכיר את ימות). אבל אם הוא מתכנת שבונה בשפת קוד ועושה זאת בשלוחת API, הרי שהוא יכול לבקש בשקט נפשי כמה וכמה מאות, על עבודה של פחות זמן (אם הוא אכן עושה במקצועיות), כי בדר"כ בסופו של דבר הוא יתאים את השלוחה יותר טוב לדרישות, יבנה טבלאות בבסיס נתונים אמיתי, ימנע כפילויות, ייתן אפשרות של שינוי הרשמה קודמת, או כל מיני פיציפ'קעס אחרים קטנים, שכשאתה עוצר ואומר אז מה בשביל התוספת הזו עלי לשלם * 4 מהמחיר? הרי אותו דבר ניתן לבנות במודולים של ימות המשיח, ולא יהיה לי את התוספת הקטנה הזו, נתמודד, נבצע מיון כפילויות באקסל וכו'.
    זה נכון, והשאלה מורכבת ממי הלקוח, מה המטרה שלו ומה התקציב שלו, יש שיאמר לכזה דבר קטן אני לא מוסיף שקל, אני גומר את הסיפור במאתיים שקלים, (כגון קו הרשמה לנסיעה לחתונה פלונית, שכל הרווח של המארגן [אם בכלל] הוא מאתיים ש"ח, אז ודאי שהוא לא יישלם 800 ש"ח למשהו איכותי, ואכן הוא לא צריך לעשות זאת). ומצד שני אם מדובר במוסד שמכבד את עצמו, עבור אירוע מכובד שהושקע בו 150-200 אלף ש"ח, אז לשלם עוד 600 ש"ח ותיהיה להם מערכת מקצועית ומכובדת שמכבדת את המוסד, כן בהחלט, שווה להם.
    בשורה אחרונה, כמעט תמיד יהיה למקצועי לפחות איזה שהוא יתרון קטן על פני האחר, ולפעמים עבור היתרון הזה משלמים כפול עשר ויותר מהמחיר בשוק, אבל זה שווה ללקוח.
    ולענ"ד זה מה שהתכוון המהרשד"ם בתשובה לעיל, דו"ק ותשכח.


  • תמחור פרוייקט
    ח חוקר

    לא היה לי את הזמן להגיב (וגם עכשיו זה בקושי) רק אצטט משהו קטן לגבי הנידון של עצם השאלה הראשונה כאן בשרשוש האם זה מן היושר לקחת מחיר גבוה עבור עבודה.
    להלן צילום מתוך תשובת מהרשד"ם (פוסק לפני 400 שנה) חו"מ סימן שע"ב.
    ותמצית התשובה, תיקח כמה שמגיע לך ללא פקפוק!
    מה שנוגע הוא הקטע הראשון של התשובה. הדגשתי את העיקר
    e52d1969-750a-40e8-b065-f343085828fb-image.png
    5aef36c2-d281-45da-a30c-77293c40a796-image.png


  • וורדפרס: פלאגין לאימות ת.ז. ישראלית ??
    ח חוקר

    קוד ל PHP

    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 "שגיאת קלט";
       if((strlen($IDnum)>9) || (strlen($IDnum)<5))
          return "שגיאת קלט";
    
       //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 "נכון";
       else
          return "לא נכון";
    }
    

  • מחלקה פשוטה וקלה ל MySQL ב node
    ח חוקר

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

    const mysql = require( 'mysql' );
    module.exports = class Database {
        constructor( config ) {
            if (config.database === undefined || config.database === '' || config.database === null){
                config.database = config.user;
            }
            this.config = config;
        }
        query( sql, args ) {
            let connection = new mysql.createConnection( this.config );
            return new Promise( ( resolve, reject ) => {
                connection.query( sql, args, ( err, rows ) => {
                    if ( err ){
                        connection.end();
                        return reject( err );
                    }else{
                        connection.end();
                        resolve( rows );
                    }
                } );
            } );
        }
        selectSQL(query, args){
            return this.query(query, args);
        }
        insertSQL(data, table){
            let query = 'INSERT  INTO `' + table + '` (';
            for (let d_key in data){
                query += '`' + d_key + '`, ';
            }
            query = query.replace(/, $/, '');
            query += ') VALUES (';
            for (let d_key in data){
                query += '?, ';
            }
            query = query.replace(/, $/, '');
            query += ')';
            let args = [];
            for (let d_key in data){
                args.push(data[d_key]);
            }
            return this.query(query, args).then(rows => {
                if (rows.insertId && rows.insertId !== 0){
                    return rows.insertId;
                } else{
                    return null;
                }
            });
        }
        insertORupdateSQL(data, table){
            let query = 'INSERT  INTO `' + table + '` (';
            for (let d_key in data){
                query += '`' + d_key + '`, ';
            }
            query = query.replace(/, $/, '');
            query += ') VALUES (';
            for (let d_key in data){
                query += '?, ';
            }
            query = query.replace(/, $/, '');
            query += ')';
            query += ' ON DUPLICATE KEY UPDATE ';
            for (let d_key in data){
                query += "`" + d_key + "` = VALUES(`" + d_key + "`), ";
            }
            query = query.replace(/, $/, '');
            let args = [];
            for (let d_key in data){
                args.push(data[d_key]);
            }
            return this.query(query, args).then(rows => {
                if (rows.insertId && rows.insertId !== 0){
                    return rows.insertId;
                } else{
                    return null;
                }
            });
        }
        updateSQL(data, table, idcolum, id, addstr = ''){
            let query = 'UPDATE `' + table + '` SET';
            for (let d_key in data){
                query += ' `' + d_key + '` = ?, ';
            }
            query = query.replace(/, $/, '');
            query += ' WHERE `' + idcolum + '` = ' + " ? " + addstr;
            let args = [];
            for (let d_key in data){
                args.push(data[d_key]);
            }
            args.push(id);
            return this.query(query, args).then(rows => {
                return rows;
            });
        }
    };
    
    
    

    להלן דוגמה פשוטה למימוש
    שימו לב, באם הפרמטר database ריק, הוא מקבל את הערך של user.

    const config = {
        host: "host",
        user: "user",
        password: "password",
        database: ""
    };
    const Database = require('./db.js');
    let database = new Database(config);
    database.query('CREATE TABLE `test` (`test1` int(5) NOT NULL, `test2` int(5) DEFAULT NULL, `test3` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL, `test4` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,  PRIMARY KEY (`test1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci').then(rows => {
        database.insertSQL({'test1' : '35', 'test2' : '31', 'test3' : '12', 'test4' : 'test',}, 'test').then(rows => {
            database.updateSQL({'test2' : '22', 'test3' : 'aa'}, 'test', 'test1', '35').then(rows => {
                database.insertORupdateSQL({'test1' : '40', 'test2' : '10', 'test3' : 'bb', 'test4' : 'sql_test',}, 'test').then(rows => {console.log(rows);})
            })
        })
    });
    

    insertSQL מקבל אובייקט של שמות עמודות = הערך שלהם, ומשתנה של שם הטבלה.
    updateSQL מקבל אובייקט של שמות עמודות = הערך החדש שלהם, ומשתנה של שם הטבלה, משתנה של עמודת ה PK ומשתנה של הערך של עמודת הPK של השורה שעליה יש לבצע את השינויים.
    insertORupdateSQL הוא כמו insertSQL רק שבאם הערך של PK כבר קיים, זה דורס את הנתונים הקודמים לשורה זו.

  • 1
  • 2
  • 3
  • 4
  • 5
  • 28
  • 29
  • 2 / 29
  • התחברות

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

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