Pages

vineri, 3 octombrie 2025

News : Rebelle 8 is Here - free trial only 30 days !

Note: I tested with my old laptop with 4Gb RAM and it runs very slowly. With a similar open source software with similar features on the same hardware the open source software was much faster.
... from twitter : We’re excited to announce that Rebelle 8 has officially moved out of Early Access and is now available as the full Rebelle 8.1 release! Try Rebelle 8 for free for 30 days:

News : Google Apps Script - check websites for google ads.

Today, I will show you a way to check for the existence of Google Ads through a script or implementation, similar to what exists on Blogger. I haven't tested it very thoroughly, but it seems functional and is a good starting point in programming with GAScript. I used a spreadsheet and entered a personal Blogger in cell A2. I still recommend following Google's conditions because Google is very clever at detecting fakes and has protections even against attacks...
function onOpen() {
  // Creează un meniu personalizat în Spreadsheet
  var ui = SpreadsheetApp.getUi();
  ui.createMenu('Verificare Reclame Blogger')
    .addItem('Verifică Reclame', 'checkBloggerAds')
    .addItem('Verifică și Trimite Email', 'checkBloggerAdsAndEmail')
    .addToUi();
}

function checkBloggerAds() {
  // Obține foaia activă
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // Citește datele din coloana A (website-urile)
  var range = sheet.getRange("A2:A" + sheet.getLastRow());
  var urls = range.getValues();
  var results = [];

  // Indicatori specifici pentru Google Ads/AdSense pe Blogger
  var adsScriptPattern = "adsbygoogle.js"; // Pentru coloana B
  var bloggerAdsPatterns = [
    "data-ad-client",           // Atribut specific AdSense
    "google_ad_client",         // Folosit în codurile mai vechi sau automate
    'class="adsbygoogle"'       // Tag-ul <ins> folosit pentru reclame
  ];

  // Verifică fiecare URL
  for (var i = 0; i < urls.length; i++) {
    var url = urls[i][0];
    if (url) { // Verifică dacă URL-ul nu este gol
      try {
        var response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
        var content = response.getContentText();
        var scriptFound = content.includes(adsScriptPattern);
        var bloggerAdsFound = false;

        // Verifică indicatorii specifici Blogger
        for (var j = 0; j < bloggerAdsPatterns.length; j++) {
          if (content.includes(bloggerAdsPatterns[j])) {
            bloggerAdsFound = true;
            break;
          }
        }

        // Adaugă rezultatele pentru coloanele B și C
        results.push([scriptFound ? "Da" : "Nu", bloggerAdsFound ? "Da" : "Nu"]);
      } catch (e) {
        results.push(["Eroare: " + e.message, "Eroare: " + e.message]);
      }
    } else {
      results.push(["", ""]);
    }
  }

  // Scrie rezultatele în coloanele B și C
  if (results.length > 0) {
    sheet.getRange(2, 2, results.length, 2).setValues(results);
  }
}

function checkBloggerAdsAndEmail() {
  // Obține foaia activă
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  // Citește datele din coloana A (website-urile)
  var range = sheet.getRange("A2:A" + sheet.getLastRow());
  var urls = range.getValues();
  var results = [];
  var emailBody = "Rezultatele verificării reclamelor Google Ads pe blogurile Blogger:\n\n";
  emailBody += "URL | Script adsbygoogle.js | Implementare Blogger\n";

  // Indicatori specifici pentru Google Ads/AdSense pe Blogger
  var adsScriptPattern = "adsbygoogle.js"; // Pentru coloana B
  var bloggerAdsPatterns = [
    "data-ad-client",
    "google_ad_client",
    'class="adsbygoogle"'
  ];

  // Verifică fiecare URL și construiește corpul email-ului
  for (var i = 0; i < urls.length; i++) {
    var url = urls[i][0];
    if (url) { // Verifică dacă URL-ul nu este gol
      try {
        var response = UrlFetchApp.fetch(url, { muteHttpExceptions: true });
        var content = response.getContentText();
        var scriptFound = content.includes(adsScriptPattern);
        var bloggerAdsFound = false;

        // Verifică indicatorii specifici Blogger
        for (var j = 0; j < bloggerAdsPatterns.length; j++) {
          if (content.includes(bloggerAdsPatterns[j])) {
            bloggerAdsFound = true;
            break;
          }
        }

        // Adaugă rezultatele pentru coloanele B și C și la email
        results.push([scriptFound ? "Da" : "Nu", bloggerAdsFound ? "Da" : "Nu"]);
        emailBody += `${url} | ${scriptFound ? "Da" : "Nu"} | ${bloggerAdsFound ? "Da" : "Nu"}\n`;
      } catch (e) {
        results.push(["Eroare: " + e.message, "Eroare: " + e.message]);
        emailBody += `${url} | Eroare: ${e.message} | Eroare: ${e.message}\n`;
      }
    } else {
      results.push(["", ""]);
    }
  }

  // Scrie rezultatele în coloanele B și C
  if (results.length > 0) {
    sheet.getRange(2, 2, results.length, 2).setValues(results);
  }

  // Trimite email-ul
  MailApp.sendEmail({
    to: "catalinfest@gmail.com",
    subject: "Rezultate Verificare Reclame Google Ads pe Blogger",
    body: emailBody
  });
}

News : Unlock 9 Winner 2D Animation Techniques Using Cartoon Animator

duminică, 28 septembrie 2025

News : ... linux kernel new design ...

This patch series introduces multikernel architecture support, enabling multiple independent kernel instances to coexist and communicate on a single physical machine. Each kernel instance can run on dedicated CPU cores while sharing the underlying hardware resources. The multikernel architecture provides several key benefits: - Improved fault isolation between different workloads - Enhanced security through kernel-level separation - Better resource utilization than traditional VM (KVM, Xen etc.) - Potential zero-down kernel update with KHO (Kernel Hand Over)

News : Top Game Performance Tales | RDC 2025

luni, 22 septembrie 2025

News : Marvelous Designer 2025.1 Quickstart Guide #5: Arrangement Tools

 <div><iframe width="560" height="315" src="https://www.youtube.com/embed/JLlM1QTpfms?si=axyUN3XNa92Z9EhG" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe></div>