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

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

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

MusiCode

@MusiCode
אודות
פוסטים
547
נושאים
42
קבוצות
0
עוקבים
1
עוקב אחרי
0

פוסטים

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

  • שוינדוס יקליד לי את הסיסמא
    MusiCodeM MusiCode

    @יוני אא"ט, זה-זה.

    אפשר מתזמן, או בתיקיית הפעלה, מה שאתה רוצה.
    הנה הסקריפט:

    @echo off
    rundll32.exe user32.dll, LockWorkStation
    

  • שוינדוס יקליד לי את הסיסמא
    MusiCodeM MusiCode

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

    היות והמחשב שלי איטי, עשיתי את זה, שלא אצטרך לחכות פעמיים בהפעלה...


  • איזה שרתי/לקוחות מייל תומכים בכתובות בעברית
    MusiCodeM MusiCode

    איזה חברה מנהלת את הדומיין .קום?


  • בנית מרכזיה טלפונית קטנה מחיר?
    MusiCodeM MusiCode

    לא שידוע לי.
    זה באמת משהו שחסר להם...

    אולי יהיה בהמשך, כי יש להם תוכנית לשלב באתר אפשרות לשמוע את הקו.


  • בנית מרכזיה טלפונית קטנה מחיר?
    MusiCodeM MusiCode

    @clickone כן.
    יש למעשה את רוב הפונקציות שיכולות להיות.

    יש ניתוב לIP, שיכול לפתור אפ' הפנייה לטלפון VOIP.
    פותחים חשבון באחת החברות שמספקות חשבון SIP חינם.

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


  • בנית מרכזיה טלפונית קטנה מחיר?
    MusiCodeM MusiCode

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


  • איזה שרתי/לקוחות מייל תומכים בכתובות בעברית
    MusiCodeM MusiCode

    שים לב לזה:
    3fb262a1-6424-4022-ac92-c8f602c5aeaf-image.png


  • נגן ללא הרע דיו
    MusiCodeM MusiCode

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


  • נגן ללא הרע דיו
    MusiCodeM MusiCode

    קבלו סיפור הזוי:

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

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

    אם מישהו יחפור טוב באתר של רוקבוקס, אולי מוזכר שם משהו.


  • הערות בקוד - סיעור מוחות
    MusiCodeM MusiCode

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

    כמה זמן לוקח השמה של משתנה?

    אני כן מנסה לחתור לזה,
    אבל הפוסט הזה

    @nigun אמר בהערות בקוד - סיעור מוחות:

    פוסט של ליאור בר און על קוד ספרותי

    כבר נראה לי מוגזם...

    הוא משבש את התחביר הנורמלי של הקוד, כדי שיהיה יותר ברור!
    (פונקציית הSWITCH שם).

    זה בסוף לא עולה מחיר?


  • מחלקת "תכנות נורמלי במערכות 'ימות'..."
    MusiCodeM MusiCode

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


  • עצירת הורדה לאחר מס' דקות ושמירת הנתונים שהורדו - Node.js
    MusiCodeM MusiCode

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


  • מחלקת "תכנות נורמלי במערכות 'ימות'..."
    MusiCodeM MusiCode

    @yossiz נתתי 20 לייקים...

    זהו סיימתי משהו בסיסי.

    הנה הדוגמא:

    index.js

    const express = require('express');
    const app = express();
    const port = 3000;
    
    const YemotExtension = require('./yemot_api/YemotExtension.js');
    
    /*
    	http://localhost:3000/r?ApiCallId=9m8u98b97yb87t76t76rt&ApiPhone=0504123456&ApiDID=0773137770&ApiRealDID=0773137770&ApiExtension=1/1
    */
    
    const $extension = new YemotExtension();
    
    $extension.set_function( function * ($call) {
    	
    	let $data = [
    		{type: "file", data: "000"},
    		{type: "text", data: "זה טקסט"}
    	];
    	
    	let $input = yield $call.read($data);
    
    	$data = [
    		{type: "number", data: $input}
    	];
    
    	yield $call.id_list_message($data);
    	
    });
    
    app.get('/r', ($req, $res) => $extension.run($req, $res));
    
    app.listen(port, ()=>console.log("YemotAPIHandler started!"));
    

    קבצי הליבה:

    yemot_api/YemotApiFunctions.js

    /*
    	המודול הזה, מכיל את המודול הבסיסי עם הפונקציות לתקשר עם ימות
    */
    
    const default_options = {
    
    	//all
    	val_name: undefined,
    
    	//tapp
    	re_enter_if_exists: false,
    	max: '*',
    	min: 1,
    	sec_wait: 7,
    	play_ok_mode: 'Number',
    	block_asterisk: true,
    	allow_zero: true,
    	replace_char: '**',
    	digits_allowed: undefined, // ['1', '14']
    	amount_attempts: undefined, // 1
    	read_none: false,
    	read_none_var: undefined,
    
    	//voice
    	lang: 'he-IL',
    	allow_tap: false,
    
    	//rec
    	record_folder_move: undefined,
    	record_file_name: undefined,
    	record_ok: true,
    	record_hangup_save: false,
    	record_attach: false
    };
    
    const default_options_keys = Object.keys(default_options);
    
    const data_type = {
    
    	'file':'f',
        'text':'t',
        'speech':'s',
    	'digits':'d',
    	'number':'n',
    	'alpha':'a'
    };
    
    module.exports = class YemotApiFunctions {
        
        constructor() {
    
            this.value_num = 1;
        }
    
        read($data, $mode = 'tap', $options = {}) {
    
    		$options = this._make_read_options($options);
            let $data_str = this._make_read_data($data);
    		let $res;
    		
    		if(typeof $data != 'object') {
    			throw new Error('Data is undefined');
    		}
    
    		switch($mode) {
    
    			case 'tap':
    				$res = this._make_tap_mode_result($data_str, $options);
    				break;
    
    			case 'voice':
    				//...
    				break;
    
    			case 'rec':
    				//...
    				break;
    
    			default:
    				throw new Error('mode parameter is Invalid');
    			
    		}
    		
            this.expect = $options.val_name;
            return $res;
        }
    
        goToFolder(folder) {
            return `go_to_folder=${folder}`;
        }
    
        id_list_message($data) {
    
            return 'id_list_message=' + this._make_read_data($data);
        }
    
        credit_card() {
            // ...
        }
    
        routing_yemot($phone) {
            return 'routing_yemot=' + $phone;
        }
    
        routing() {
            //...
    	}
    
    	// === === === === === === === === === === === === === ===
    	
    	_make_read_options($options) {
    
    		default_options_keys.forEach((value) => {
    
    			if(!$options[value]) {
    
    				$options[value] = default_options[value];
    			}
    		});
    
    		return $options;
    	}
    
        _make_read_data($data) {
    
    		let $res = '';
    
    		let i = 1;
    
    		$data.forEach((value) => {
    
    			$res +=  i > 1? '.':'';
    
    			$res += data_type[value.type] + '-';
    
    			$res += value.data;
    
    			i ++;
    		})
    
    		return $res;
    	}
    	
    	_make_tap_mode_result ($data_str, $options) {
    
    		let $res;
    
    		$res = `read=${$data_str}=`;
    
    		if(!$options.val_name) {
    
    			$options.val_name = 'val_' + this.value_num;
    			this.value_num ++;
    		}
    
    		$res += $options.val_name + ',';
    
    		$res += $options.re_enter_if_exists?'yes,':'no,';
    
    		$res += $options.max + ',';
    
    		$res += $options.min + ',';
    
    		$res += $options.sec_wait + ',';
    
    		$res += $options.play_ok_mode + ',';
    
    		$res += $options.block_asterisk?'yes,':'no,';
    
    		$res += $options.allow_zero?'yes,':'no,';
    
    		$res += $options.replace_char + ',';
    
    		$res += $options.digits_allowed?$options.digits_allowed.join('.'):'' + ',';
    
    		$res += $options.amount_attempts?$options.amount_attempts:'' + ',';
    
    		$res += $options.read_none?$options.read_none:'' + ',';
    
    		$res += $options.read_none?$options.read_none:'';
    
    		return $res;
    
    	}
    }
    

    yemot_api/YemotApiCall.js

    const YemotApiFunctions = require('./YemotApiFunctions');
    
    module.exports = class YemotApiCall extends YemotApiFunctions {
    
        constructor(callHandler) {
            super();
            this.controller = callHandler(this);
        }
    
        get_return_value() {
            if (this.expect && this.query[this.expect]) {
    			
    			let r = this.query[this.expect];
    			this.expect = null;
    			return r;
    			
    		} else {
    			return null;
    		}
            
        }
        
        set_user_vars($query) {
    
    		if(!$query.ApiCallId || !$query.ApiPhone
    			|| !$query.ApiDID ||  !$query.ApiRealDID
    			|| !$query.ApiExtension) {
    				
    			throw new Error('Missing parameters');
    		}
    
    		this.ApiCallId = $query.ApiCallId;
    		this.ApiPhone = $query.ApiPhone;
    		this.ApiDID = $query.ApiDID;
    		this.ApiRealDID = $query.ApiRealDID;
    		this.ApiExtension = $query.ApiExtension;
    		this.query = $query;
    
    		if($query.ApiEnterID) {
    
    			this.ApiEnterID = $query.EnterID;
    		}
    
    		if($query.ApiEnterIDName) {
    
    			this.ApiEnterIDName = $query.EnterIDName;
    		}
    
    		if($query.hangup) {
    
    			this.hangup = $query.hangup;
    		}
    
    	}
    
    }
    

    yemot_api/YemotExtension.js

    
    const YemotApiCall = require('./YemotApiCall');
    
    module.exports = class YemotExtension {
    	
    	constructor () {
    
    		this.active_calls = {};
    		
    	}
    	
    	run ($req, $res) {
    
    		let $call_id = $req.query.ApiCallId
    		
    		let $current_call = this._get_current_call($call_id);
    		
    		$current_call.set_user_vars($req.query);
    		
    		let $returned_key = $current_call.get_return_value();
    		
    		let reply = $current_call.controller.next($returned_key);
    
    		if(reply.done || $req.query.Hangup) {
    
    			this._remove_current_call($call_id);
    		}
    		
    		return $res.send(reply.value);
    	}
     
    	set_function (controller_function) {
    		
    		this.controller_function = controller_function;
    	}
    
    	_get_current_call ($call_id) {
    		
    		let $current_call = this.active_calls[$call_id];
    		
    		if ($current_call) {
                return $current_call;
            } else {
                $current_call = this.active_calls[$call_id] = new YemotApiCall(this.controller_function);
    			return $current_call;
            }
    	}
    
    	_remove_current_call($call_id) {
    
    		delete this.active_calls[$call_id];
    	}
    }
    

  • האם יש חברה שלא מגבילה את זמן השיחה?
    MusiCodeM MusiCode

    @מורשת-מרן אמר בהאם יש חברה שלא מגבילה את זמן השיחה?:

    חשוב לציין כי שיחה מעל 120 דקות שיחה מחויבת החל מהדקה ה 120 על פי תעריפי התוכנית.

    אתה מתכונן לשלם את זה??


  • הערות בקוד - סיעור מוחות
    MusiCodeM MusiCode

    @שואף אמר בהערות בקוד - סיעור מוחות:

    לשאר אין לי כוח לכתוב
    איך אמר פעם מישהו, אם שברתי את הראש לכתוב את זה, שאשבור את הראש גם לקרוא את זה

    לא די ששברת את הראש לכתוב את זה,
    תצטרך גם לשבור את הראש לקרוא את זה???


  • הערות בקוד - סיעור מוחות
    MusiCodeM MusiCode

    @יוסף-בן-שמעון אמר בהערות בקוד - סיעור מוחות:

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

    תודה רבה על היוזמה.

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

    חוץ מזה, הכל נכון (שוב, לדעתי).

    אגב, יש מוסכמות בעניין כתיבת הערות?
    ואם כן - יש איזה לינטר שאוכף אותן?


  • שמירת סיסמה בכרום עם 3 שדות
    MusiCodeM MusiCode

    איפה הנתונים נשמרים?
    בשרתי התוסף?


  • בניית מחלקת תקשורת עם ימות המשיח API ב nodejs
    MusiCodeM MusiCode

    @חוקר אמר בבניית מחלקת תקשורת עם ימות המשיח API ב nodejs:

    @zvizvi אמר בבניית מחלקת תקשורת עם ימות המשיח API ב nodejs:

    מציע לשים את הקוד בGithub כדי שיהיה אפשר לתרום ולשפר אותו.

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

    ספר לנו על זה,
    ומאיפה אתה יודע.


  • ניתוב לIP מימות המשיח למרכזייה 3CX
    MusiCodeM MusiCode

    @שמואל4 הכיוון הוא חומת האש.
    תשחק שם.


  • מחלקת "תכנות נורמלי במערכות 'ימות'..."
    MusiCodeM MusiCode

    @שואף ללקוחות שחפצים ביקרם... (לא אני).

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

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

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