Thursday, November 24, 2016

שכפול אובייקטים ב- JavaScript באמצעות JSON פונקציות

Clone, Parse and Stringify JavaScript objects using JSON.parse and JSON.stringify without loosing functions in deep object:



function localStringify(obj) {
             return JSON.stringify(obj, function(key, val) { return (typeof val === 'function') ? val.toString() : val; });
}

function localParse(str) {
    return JSON.parse(str, function(key, val) { return (typeof val === 'string' && val.substring(0,8) === 'function') ? eval('(' + val + ')') : val; });
        }
 
function cloneObject(obj) {
    if (obj === null || typeof obj !== 'object') {
                return obj;
   }
       
    var temp = obj.constructor(); // give temp the original obj's constructor
    for (var key in obj) {
        temp[key] = cloneObject(obj[key]);
    }
       
   return temp;
}

Friday, November 4, 2016

הרצת VNC ב - Linux לפני לוגין באמצעות x11vnc

הכדי להתחבר ב - vnc למחשב לינוקס מרוחק צריך לבצע לוגין לפני שה - VNC עולה. ולכן כדי להריץ x11vnc עבור מסך הלוגין עצמו, לפני שהתחברנו, ניתן להשתמש בפקודה:

sudo x11vnc -display :0 -auth guess


אחר כך אפשר להריץ את פקודת ה - x11vnc שתישאר לתמיד:

x11vnc -forever -usepw -xkb -nomodtweak
 

Tuesday, November 1, 2016

האפשרות ש - Microsoft Excel יוכל לקרוא קובץ CSV ב - UTF-8

עבודה עם אקסל יכולה להיות מאוד מרגיזה לפעמים.
לצערנו Excel עדיין עובד בברירת המחדל ב - Windows-1255 Encoding.
אבל מה אם אנחנו רוצים ליצור קובץ CSV מתקדם יותר ... נניח UTF8.
הפתרון נמצא ב - BOM:

 header("Content-Type: text/csv; charset=UTF-8");
 header("Content-Disposition: attachment; filename=$filename"); // Disable caching
 header("Cache-Control: no-cache, no-store, must-revalidate"); // HTTP 1.1
 header("Pragma: no-cache"); // HTTP 1.0
 header("Expires: 0"); // Proxies

 $out = fopen('php://output', 'w');
 $BOM = "\xEF\xBB\xBF"; // UTF-8 BOM
 fwrite($out, $BOM);
 $headlines = array("a", "b", "c");
 fputcsv($out, $headlines);

 // loop data here

 fclose($out);