Come aggirare il paywall de “L’Espresso”

2016-07-15 1 commento

Disabilitando JavaScript. Sì, è così semplice😛

Prima:

Schermata 2016-07-15 alle 18.29.31

 

Ora togliamo di mezzo JavaScript dalle impostazioni del browser:

Schermata 2016-07-15 alle 18.30.24

 

Et voila:

Schermata 2016-07-15 alle 18.42.44.png

 

Trollface

U MAD??

Block those annoying cookie warnings using your adblocker

In Italy and EU some stupid laws oblige webmasters to add cookie notices to their sites, to inform the users that cookies are being used. But who the hell cares? Often there is no choice but to abandon the site you’re visit or consent to cookies, and power users already know how to disable or enable cookies on a per-site basis using their browser’s settings.

Cookie warnings are useless, obtrusive and just another item to dismiss on web pages. Luckily, we can block most of them easily.

If you’re using a browser plugin like AdBlock Plus, Adblock, uBlock Origin or others which support ABP-style blocklists (and you really should!), you can add these two lists which block a whole lot of cookie warnings:

  1. Prebake.eu
  2. I don’t care about cookies

The URLs of the lists can be found on the web pages: you just need to add them to your blocker. Usually this can be done in the extension preferences.

If you’re not using any adblocker, I really recommend uBlock Origin. It’s a fast and lightweight ad blocker which can make your browsing experience just better.

Happy browsing!🙂

P.S.: yeah, even this blog has a cookie warning… which can be successfully blocked using the above method!

How to (temporarily) regain write performance on Samsung 840 EVO SSD

2015-10-25 1 commento

Samsung 840 EVO

Samsung 840 EVO SSD is a popular Solid State Drive device, one of the most sold for a long period of time. Sadly, it’s affected by a serious performance problem. Samsung released over the time multiple firmware upgrades which address the read performance slowdown. If you haven’t done it yet, it’s time to upgrade to the latest version (at the time of the writing, EXT0DB6Q).

Also, it’s advisable to enable TRIM on the SSD if it’s not already enabled. I used trimforce to enable it on my Mac.

Even after the firmware upgrades, I noticed that my 250 GB SSD suffers from dramatic write speed slowdowns. The tests performed using Blackmagic Disk Speed Test on a Mac show that write speed decreased to 45 MB/s: worse than a traditional HDD! Read speed was instead ok after the firmware upgrades, well over 450 MB/s.

I found an effective but temporary fix to regain the lost performance:

  1. Fill the free space of your SSD with data. For example, duplicate some large files that you already have. It will be a quite slow process, especially towards the end.
  2. Delete those useless files.
  3. Leave the PC on for 15 minutes or more and let the SSD quietly do its garbage collection.

Then, test again the write speed of your SSD. For me, the results were impressive, with stable write speeds up to 275 MB/s.

Note that this is a temporary fix: the performance will degrade again and you will have to redo the same trick.

Adium + Facebook Chat + 2-factor auth: yes, we can!

2015-06-02 1 commento

Update (2015-08-01): this is no longer working. Facebook dropped the support for XMPP.

Adium is one of the best multi-protocol chat clients for OS X. Among the supported services, Facebook chat is included. But on April 30, 2014 Facebook decided to deprecate the Facebook Chat API, so external clients are not able to connect to the chat using that API.

However, it appears that the XMPP protocol is still working. So, let’s use it.

  1. If you use two-factor authentication (2FA), first go to https://www.facebook.com/settings?tab=security and generate a new app password for Adium.
    Facebook app passwords
  2. Open Adium and go to menu Adium -> Preferences… -> Account.
  3. Create a new XMPP (Jabber) account. Do not create a Facebook account, that will not work.
    Adium: new XMPP account
  4. Insert username@chat.facebook.com as the Jabber ID (“username” is your username on Facebook).
  5. If you use 2FA, insert the app password generated at step 1 as your password. If you’re not using 2FA, insert your Facebook password.
    Adium new account
  6. Go to “Options” and enable SSL/TLS.
    Adium - Enable SSL/TLS
  7. Click on “Ok”.
  8. After a brief delay, Adium should connect to Facebook chat!

How to make SonarQube accept tabs instead of spaces for indentation

I’m developing a Java application as a university assignment and I’m using SonarQube for automatic code quality assessment.

Sonar is quite rigorous in spotting errors in code, and this is often useful. But it becomes annoying when Sonar floods the list of problems with multiple messages about the use of tabs instead of spaces for code indentation. Eclipse by default indents code with tabs: I think that this is the right decision and I don’t want to change that setting, even if SonarQube doesn’t like it.

So, how to configure SonarQube to accept spaces?

  1. Start Sonar and go to http://localhost:9000. This is the main dashboard of SonarQube.
  2. Log in using the link in the upper right corner of the screen. Username and password are both “admin” by default.
  3. Click on “Quality profiles” in the upper toolbar. You should see only one profile, called “Sonar way”.SonarQube Quality Profiles
  4. Use the “Copy” link to make a duplicate of this profile. Name the new profile as you want, e.g. “Sonar way (tabs)”.
  5. When it’s done, click on the number relative to the new profile in the “Rules” column. Sonar should come up with a list of active rules.
  6. Use your browser search feature to find the rule named Tabulation characters should not be used”. Deactivate it using the button on the right.
    SonarQube Rules
  7. Using the upper toolbar, go to Dashboards -> Home, then click on your project. You should now be in the dashboard of your project.
  8. Choose Settings -> Quality Profiles.
    Quality profile for project in SonarQube
  9. Select the new quality profile and click “Update”.
  10. Now, in Eclipse, you should force a full analysis of your project. To do this, run the project as “sonar:sonar” profile using Maven.You can also type mvn sonar:sonar in a terminal window in the folder that contains your pom.xml file.
  11. Go again in the SonarQube dashboard. Now you should no longer see the warnings about spaces.

Sovrapposizione di date di appello – segnalazione al Difensore degli Studenti del Polimi

Aggiornamento: meno di 24h dopo la mia segnalazione, il problema è stato risolto spostando l’appello di Meccanica. Un sentito ringraziamento al Difensore degli Studenti del Poli!

Gentile Difensore degli Studenti,

sono uno studente del terzo anno del Corso di Laurea in Ingegneria Informatica, nonché rappresentante degli studenti nel mio CCS.

Desidero segnalare delle inadempienze da parte della Scuola di Ingegneria Industriale e dell’Informazione, riguardanti la violazione di un articolo della Carta dei diritti e dei doveri degli Studenti universitari del Politecnico di Milano, nonché di un regolamento della stessa Scuola.

Nella bozza di calendario esami della scuola di Ingegneria Industriale e dell’Informazione, i primi appelli di Meccanica e Fisica Tecnica della sessione di luglio 2015 si sovrappongono nella stessa data (2 luglio) e nella stessa ora (16:30).

Il Regolamento Didattico del corso di Laurea in Ingegneria Informatica obbliga gli studenti che intendono proseguire gli studi nel corso di Laurea Magistrale a sostenere gli esami di Meccanica e Fisica Tecnica; consiglia esplicitamente di inserirli al terzo anno, piuttosto che in Laurea Magistrale (consiglio che ho seguito, insieme a molti miei colleghi).

Le “Procedure per la Verifica dell’Apprendimento nei Corsi di Laurea della Scuola di Ingegneria Industriale e dell’Informazione” prevedono, al punto 4, quanto segue:

Il calendario delle prove di verifica dell’apprendimento garantisce di norma la non sovrapposizione degli appelli relativi ad insegnamenti dello stesso anno e stesso semestre. Agli studenti laureandi viene garantita la programmazione di una prova entro la data di scadenza consegna verbali solo per gli insegnamenti del secondo e terzo anno di corso.

L’art. 12 della Carta dei diritti e dei doveri degli Studenti universitari del Politecnico di Milano recita quanto segue:

Ogni insegnamento deve prevedere un numero e una distribuzione temporale degli appelli tali da garantire agli studenti una ragionevole programmazione del proprio carico di esami. Il calendario degli appelli deve essere reso noto entro l’inizio di ciascun semestre da parte delle Facoltà. Eventuali modifiche potranno essere concordate tra gli studenti ed il docente del corso.

Il termine per la verbalizzazione degli esami ai fini dell’iscrizione all’appello di laurea della sessione è il 14 luglio: questa sovrapposizione renderebbe dunque impossibile agli studenti laurearsi in tale sessione, anche se perfettamente in regola con la propria carriera universitaria.

Ho segnalato il problema alla Presidenza di Scuola e ai docenti titolari dei due corsi in data 14 marzo; mi è stato consigliato di scrivere alla Segreteria Didattica del DEIB, cosa che ho fatto in data 15 marzo. La segreteria didattica mi ha risposto dicendomi di aver inoltrato la mia mail alla Presidenza di Scuola, in data 16 marzo. Da allora non ho ricevuto risposta.

Sempre in violazione dell’art. 12 della Carta, il calendario definitivo degli appelli non è stato pubblicato entro l’inizio del semestre (9 marzo), e non è ancora disponibile sul sito della Scuola; inoltre, non erano disponibili al 9 marzo le date delle prove in itinere di maggio, né su WebPoliself né sul sito della scuola.

La bozza di calendario per gli esami di luglio è stata pubblicata il giorno 13 marzo (dai metadati del PDF), data della chiusura della finestra di modifica semestrale del Piano di Studi, rendendo nella pratica impossibile agli studenti una scelta di esami tale da evitare sovrapposizioni.

Auspico che un suo intervento possa riportare la situazione alla regolarità.

La ringrazio per l’attenzione e porgo cordiali saluti.

Pietro De Nicolao

BitTorrent: how to make Transmission ignore the “private flag”

2015-01-02 2 commenti

Jack SparrowSome BitTorrent files have a so-called “private flag”, which is a bit in the .torrent file telling the BitTorrent client: “please, disable DHT and peer exchange; use only trackers for the discovery of peers interested in this torrent”. This can be quite useful for private trackers, communities where the files are shared only among the members and should not “leak” outside.

But some not-so-bright people upload torrents with the private flag set on public torrent sites such as The Pirate Bay, forcing all the downloaders not to use DHT. This is meaningless and detrimental to the quality of downloads, because often trackers are taken down and DHT is a very useful, distributed technology that enables us to be less dependent on said trackers.

At this time, all BitTorrent clients enforce the private flag. One can not simply edit the .torrent file stripping out the private flag, because this would alter the hash and make the torrent file invalid. The only way to ignore the private flag is to edit the source code of the BitTorrent client and make it use DHT whether the flag is set or not.

Today I’ll show you how to make this modification to the source code of a popular free and open-source client: Transmission.

I won’t cover here the steps needed to download and compile the source code, since they are OS-dependent and well documented on the Transmission development wiki.

Once you’ve downloaded the source code, all you need to do is to make a little edit to a single line of the file libtransmission/metainfo.c.

Lines 518-522 in the original source tree look like this:

518   /* private */
519   if (!tr_variantDictFindInt (infoDict, TR_KEY_private, &i))
520     if (!tr_variantDictFindInt (meta, TR_KEY_private, &i))
521       i = 0;
522   inf->isPrivate = i != 0;

You only need to edit line 522. It should read, simply: “inf->isPrivate = 0;”. So the modified snippet looks like:

518   /* private */
519   if (!tr_variantDictFindInt (infoDict, TR_KEY_private, &i))
520     if (!tr_variantDictFindInt (meta, TR_KEY_private, &i))
521       i = 0;
522   inf->isPrivate = 0;

We’re telling that every torrent should be treated as “public”. Now save the file, compile the client, locate the executable and use it. Done! No private flag anymore.🙂

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Segui assieme ad altri 992 follower

%d blogger cliccano Mi Piace per questo: