sabato 21 settembre 2024

GUIDA: AVVISO: L'attività è registrata ma potrebbe essere impossibile avviarla. È necessario attivare i privilegi di accesso batch per l'entità attività.

 Salve a tutti,

lavorando con Windows e SCHTASKS mi sono trovato di fronte a questo errore:

 "AVVISO: L'attività è registrata ma potrebbe essere impossibile avviarla. È necessario attivare i privilegi di accesso batch per l'entità attività."

che è come al solito mal tradotto dall'inglese:

The task is registered, but may fail to start. Batch logon privilege needs to be enabled for the task principal.

Per risolvere l'errore di configurazione dovete agire in questo modo:

Aprire come amministratore SECPOL : "Criteri di sicurezza locali"

Selezionare : "Criteri locali"

Selezionare : "Assegnazione diritti utente"

Selezionare : "Accesso come processo batch"

Inserire l'utente che deve eseguire il processo batch da SCHTASKS.


La descrizione in inglese del problema è:

Impersonated users => Must have "logon as batch job" set in the profile


Ho seguito la seguente guida in inglese:

https://www.brooksnet.com/granting-logon-batch-job


Buon Lavoro a tutti.

mercoledì 27 novembre 2019

TRUFFA buy-all-electronics.com ?

Ciao a tutti,

è un po' che non scrivevo in questo blog e mi sono attivato perché cercando dei prodotti in rete ho trovato un sito moooolto conveniente, anzi troppo conveniente.

Temo sinceramente che dietro a questo sito ci sia una qualche forma di truffa.

Il sito è:

https://www.buy-all-electronics.com/

I prezzi erano già sotto la soglia di mercato ma poi hanno applicato una promo del -22% per Novembre 2019.

Inoltre il metodo di pagamento: Skrill non brilla certo per recensioni positive.

Allora ho controllato la data di creazione del sito: Created on 2019-09-23
che è un po' troppo recente.

IL sito è stato creato da un certo: " BUYCOM STORE LOGISTIC di Haba Vasile"

e cercando sul Web ho trovato queste recensioni per niente positive:

https://m.eprice.it/SellerDetail.aspx?shop_id=5863

(Nel caso la pagina sparisse ne ho fatto una stampa QUI-IN-PDF)
Viene indicato come venditore scorretto.

Strano comunque che abbia "mantenuto" lo stesso nome, in genere nelle truffe si inventa un nome diverso ogni volta per evitare di essere riconosciuti.

IL mio consiglio è : 
1) evitare, 
2) se volete rischiare, non pagare con bonifico ma con carta di credito e chiedere il rimborso appena rimanda la spedizione con qualche scusa.

Se siete incappati in questa truffa, fatemelo sapere.

domenica 28 novembre 2010

HTML5 Javascript Local DB working example of OpenDataBaseSync (using a worker)

This is a working example of OpenDataBaseSync, the Javascript/HTML5 interface to Local DB.

Using a worker is needed because OpenDataBaseSync is available only in separate thread (workers).

This example uses 2 files:  "db-test-main.html" and "db-test-worker.js".


Source of: db-test-main.html




<html><head><title>HTML5 Javascript Local DB TEST: OpenDataBaseSync (using a worker)</title></head> <body> <h2>This is a working example of HTML5 Javascript Local DB TEST: OpenDataBaseSync (using a worker)</h2> <h3>Output of test is:<pre><output id="result"></output> </pre></h3> <script>  // The Power Of Love   // see: www.cavalieridellaluce.net   function dumpObject(obj) {     return dumpObj( obj, "", 0, 0 ) ;   }   var MAX_DUMP_DEPTH = 10;   function dumpObj(obj, name, indent, depth) {     if (depth > MAX_DUMP_DEPTH) {       return indent + name + ": \n";     }     if (typeof obj == "object") {       var child = null;       var output = indent + name + "\n";       indent += "\t";       for (var item in obj)       {          try {                 child = obj[item];          } catch (e) {                 child = "";          }          if (typeof child == "object") {                 output += dumpObj(child, item, indent, depth + 1);          } else {                 output += indent + item + ": " + child + "\n";          }       }       return output;     } else {            return obj;     }   }   function messageClientId( data ) {     clientId = data.clientId ;     writeText( "\nClient id is: "+data.clientId+" - description: " + data.record.description ) ;   }   function messageClientActionList( data ) {     clientId = data.clientId ;     writeText( "\nPreviously Stored Action list:\n"+data.result ) ;     writeText( "\nPlease refresh to see more actions...\n" ) ;   }   function messageLog( data ) {     writeText( "*** LOG: " + data.log ) ;   }   function messageWarning( data ) {     writeText( "*** WARNING: " + dumpObject( data ) ) ;   }   function messageDebug( data ) {     writeText( "*** DEBUG: " + dumpObject( data ) ) ;   }   // just append some text in output   function writeText( text ) {     document.getElementById('result').textContent = document.getElementById('result').textContent + text + "\n" ;   }   // MAIN BODY STARTING   writeText( "Starting...\n" ) ;   // Launch my worker   var worker = new Worker('db-test-worker.js');   var clientId = 0 ;   // Detect various events/messages from worker   worker.onmessage = function( event ) {     id = event.data.id ;     if( id == "clientId" ) messageClientId( event.data ) ;     if( id == "clientActionList" ) messageClientActionList( event.data ) ;     if( id == "log" ) messageLog( event.data ) ;     if( id == "warning" ) messageWarning( event.data ) ;     if( id == "debug" ) messageDebug( event.data ) ;     // Enable DEBUG     //writeText( "\nDEBUG::RECEIVED MESSAGE\n" + dumpObject( event.data )+"\n\n" ) ;    };   writeText("ask worker to setup db and retrieve client Id") ;   worker.postMessage(   { id: "setupId", newId: 123, description: "I am here..." }   ) ;   writeText("ask worker getActions") ;   worker.postMessage(   { id: "getActions" }   ) ;   writeText("Ask worker to insert new recod (777)...") ;   writeText("... this will raise an exception after first run for duplicated key") ;   worker.postMessage(   { id: "insertRecord", table: "clientActions", record: { actionId: 777, description: 'uaw' } }   ) ; </script> </body> </html>





Source of: db-test-worker.js

// The Power Of Love
// see: www.cavalieridellaluce.net
// This is my javascript worker DB thread
// openDatabaseSync is available only in workers
// just define a namespace
var wdb = {} ;
// open db syncronously
wdb.db = openDatabaseSync('db-test-cap', '1.0', 'DB test reference', 1024);

// This function perform the various action required by main
onmessage = function (event) {
  // DEBUG echoing the requests
  // postMessage( { id: "debug", description: "ECHO WORKER RECEIVED MESSAGE", data: event.data } ) ;

  id = event.data.id ;
  if( id == "setupId" ) messageSetupId( event.data ) ;
  if( id == "getActions" ) messageGetActions( event.data ) ;
  if( id == "insertRecord" ) messageInsertRecord( event.data ) ;
} ;

// give the already defined id or create tables and insert the new id 
function messageSetupId( data ) {

  // try to get client Id if exist
  try {
    row = giodb_getRecord( "clientIdentify" ) ;
  } catch( exception ) {
    postMessage( { id: "log", log: "EXCEPTION in reading clientIdentify:"+exception.message } ) ;
    postMessage( { id: "log", log: "This is the first run, we need to create tables" } ) ;

    // Let create tables -- this is a tricky function just to clean-up code
    rs = giodb_execute(   'CREATE TABLE IF NOT EXISTS clientIdentify(clientId INTEGER PRIMARY KEY ASC, description TEXT, added_on DATETIME)'   ) ;
    postMessage( { id: "log", log: "giodb_execute( created table clientIdentify)" } ) ;
    rs = giodb_execute(   'CREATE TABLE IF NOT EXISTS clientActions(actionId INTEGER PRIMARY KEY ASC, description TEXT, added_on DATETIME)'   ) ;
    postMessage( { id: "log", log: "giodb_execute( created table clientActions)" } ) ;

    giodb_insertRecord( "clientIdentify", { clientId: data.newId, description: data.description } ) ;

    row = giodb_getRecord( "clientIdentify" ) ;
  }

  // give back the result clientId
  postMessage( { id: "clientId", clientId: row.clientId, record: row } ) ;
}

// get the list of previous action and insert a new one
function messageGetActions( data ) {
  rows = giodb_getRecords( "clientActions" ) ;

  var rowOutput = "ACTIONS:\n";
  for (var i=0; i < rows.length; i++) {
    it = rows.item(i) ;
    rowOutput += "id: " + it.actionId + ", added_on: " + it.added_on + ", description: " + it.description +"\n" ;
  }
  if( i ) {
    newid = it.actionId + 1 ;
  } else {
    newid = 100 ;
    it = undefined ;
  }
  giodb_insertRecord( "clientActions", { actionId: newid, description: "This is an action test: "+newid } ) ;

  postMessage( { id: "clientActionList", result: rowOutput, last_it: it, rows: rs.rows } ) ;
}
function messageInsertRecord( data ) {
  giodb_insertRecord( data.table, data.record ) ;
}

// That's my way to insert record
function giodb_insertRecord( table, recordObj ) {
  var names = "" ;
  var values = [] ;
  var quest = "" ;

  for( var item in recordObj ) {
    names = names + ", " + item ;
    quest = quest + ",?" ;
    values.push( recordObj[item] ) ;
  }

  var sql = "INSERT INTO "+table+" ( "+names.substring(2)+" ) VALUES ( "+quest.substring(1)+" )" ;
  //postMessage( { id: "debug", result: sql, val: values } ) ;

  try {
    wdb.db.transaction(function(tx) {
      rs = tx.executeSql(   sql, values   ) ;
    }) ;
  } catch( exception ) {
    postMessage( { id: "warning", description: "Exception in giodb_insertRecord():", exception: exception, sql: sql, val: values, table: table, record: recordObj } ) ;
  }
}
// That's my way to get a record
function giodb_getRecord( table, where ) {
  var sql = "" ;
  if(   typeof(where) != 'undefined'   ) {
    var names = "" ;
    var values = [] ;

    for( var item in recordObj ) {
      names = names + " && " + item + " = ?";
      values.push( recordObj[item] ) ;
    }

    sql = "SELECT * FROM "+table+" WHERE "+names.substring(4) ;
  } else {
    sql = "SELECT * FROM "+table ;
  }
  //postMessage( { id: "debug", result: sql, val: values } ) ;

  wdb.db.transaction(function(tx) {
    rs = tx.executeSql(   sql, values   ) ;
  }) ;

  return rs.rows.item(0) ;
}
// That's my way to get many records
function giodb_getRecords( table, where ) {
  var sql = "" ;
  if(   typeof(where) != 'undefined'   ) {
    var names = "" ;
    var values = [] ;

    for( var item in recordObj ) {
      names = names + " && " + item + " = ?";
      values.push( recordObj[item] ) ;
    }

    sql = "SELECT * FROM "+table+" WHERE "+names.substring(4) ;
  } else {
    sql = "SELECT * FROM "+table ;
  }
  //postMessage( { id: "debug", result: sql, val: values } ) ;

  wdb.db.transaction(function(tx) {
    rs = tx.executeSql(   sql, values   ) ;
  }) ;

  return rs.rows ;
}
// That's my way to get many records
function giodb_execute( query ) {
  wdb.db.transaction(function(tx) {
    rs = tx.executeSql(   query, []   ) ;
  }) ;

  return rs ;
}

giovedì 31 dicembre 2009

Ubuntu: How to setup a Socks5 server on Linux ?

try install ss5: wget http://internode.dl.sourceforge.net/sourceforge/ss5/ss5-3.6.4-3.tar.gz tar -zxvf ss5-3.6.4-3.tar.gz cd ss5-3.6.4 Install ./configure make make install

sabato 19 dicembre 2009

I migiori programmi per gestire i file HDTV .TS su LINUX

Ho comprato di recente un registratore DVB-T per registrare le trasmissioni TV,
questo registratore produce dei file .TS (Transport Stream).

Sto usando diversi applicativi per gestire questi file .TS e posterò i risultati ottenuti,

quali applicativi funzionano meglio, dove ho avuto problemi di sincronismo audio/video etc..

martedì 31 marzo 2009

Info su Panasonic HDC-SD9

PARE SIA NETTAMENTE MIGLIORE LA SONY-SR11
§Varie info su questa videocamera

* sensori 1/6″ 3CCD
1/6" CCD (560K x 3 pixels)
* recording:
* HA (17Mbps/VBR) (1920 x 1080),
* HG (13Mbps/VBR) (1920 x 1080),
* HX (9Mbps/VBR) (1920 x 1080),
* HE (6Mbps/VBR) (1440 x 1080)

High Definition

Anche se siamo ancora orientati alla produzione di DVD a risoluzione standard,
è interessante iniziare ad utilizzare riprese in HD soprattutto per la possibilità di
effettuare zoom in post-processing (e magari face tracking).

HD sostituisce alla classica risoluzione:
* 576i == 1024x288 semiframe pari/dispari(inutilizzabile per zoom post produzione)
le seguenti risoluzioni:

* 720p == 1280×720 frame (921.600 pixel)
* 1080i == 1920×540 semiframe (1.036.800 pixel)
* 1080p == 1920×1080 frame (2.073.600 pixel)

non standard:
* 960x540

Le frequenze possono essere:
frequenza di 24, 25, 30, 50 e 60 Hz


FORMATI:
>> AVCHD:
* CODEC: h.264 (AVC)
* bitrate massimo: 24Mb/s
* risoluzioni: 1920x1080i, 1280x720p
* audio: (PCM 7.1 lineare ) (Dolby Digital AC-3 5.1)

>> AVCHD PRO:
* campionamento cromatico 4.2:2
* risoluzioni: 1080/60i, 1080/50i, 1080/30p, 1080/25p, 1080/24p nativo; 720/60p, 720/50p, 720/30p, 720/25p, 720/24p

>> AVCHD lite:
* ????

>> HDV:
* CODEC: MPEG-2
* bitrate massimo: 25Mb/s
* risoluzioni: 1440x1080i

>> MiniDV: