Zėŋōfōbìå

15 gennaio 2011

Converting Mac Mail Notes to Evernote

Filed under: informatica — Zeno @ 8:12

If you want to export some notes from Mac Mail to Evernote, you could select all of them and export as plain text in notes/exported plain text.txt.
Then run the following script.
For every note it will create a evernote enex file in the notes directory. Just drag those files in the evernote application and the import is done.

require 'Time'

class Debug
  @@debug = false
  def self.trace(str)
    if @@debug then
      print str
    end 
  end
end

class Evernote
  attr_accessor :export_date, :creation_date, :update_date, :version, :xml_content, :title
  def initialize
    time=Time.new
    @export_date=Evernote.format_time(time);
    @creation_date=Evernote.format_time(time);
    @update_date=Evernote.format_time(time);
    @version="NoteConverter";
    @xml_content="<div>error converting</div>"
    @title="no title"
  end
  
  def from_eml(eml)
    @creation_date=Evernote.format_time eml.creation_date
    @update_date=Evernote.format_time eml.update_date
    @xml_content= eml.to_xml
    @title=eml.subject
    
    Debug.trace "Xml content: #{@xml_content}\n"
  end
  
  def from_text(text)
    @creation_date=Evernote.format_time text.creation_date
    @xml_content= text.to_xml
    @title=text.subject
    
    Debug.trace "Xml content: #{@xml_content}\n"
  end
  
  def self.format_time(time)
    time.utc.strftime("%Y%m%dT%H%m%SZ")
  end

  def to_s
    evernoteSchema=%Q(<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE en-export SYSTEM "http://xml.evernote.com/pub/evernote-export.dtd">
<en-export export-date="#{@export_date}" application="Evernote" version="#{@version}">
<note><title>#{@title}</title><content><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
<en-note>
#{@xml_content}
</en-note>
]]></content><created>#{@creation_date}</created><updated>#{@update_date}</updated><note-attributes/></note>
</en-export>)
    return evernoteSchema
  end
  
  def to_file(filename)
  
  end

end

class Textnote
  attr_accessor :content, :creation_date, :payload, :subject
  
  def initialize(content)
    @content=content
    @last_line=false
    @payload=""
    content.each{ |line|
      if line =~ /^Date: (.*)/ then
        t=Time.parse($1)
        @creation_date = t
        Debug.trace "Creation date: #{@creation_date}\n"
      elsif line =~ /^Subject: (.*)/ then
          @subject = $1
          Debug.trace "Subject: #{@subject}\n"
      elsif line=~/^$/ then
        Debug.trace "empty\n"
        @last_line = true
      else
        if @last_line then
          @payload+="#{line}"
          Debug.trace "partial: #{line}\n"
        end         
      end
    } 
  end
  
  def to_xml()
    ret=""
    payload.each{|line|
      ret+="<div>#{line}</div>\n"
    }
    ret
    
  end

end

class Emlnote
  attr_accessor :content, :export_date, :creation_date, :update_date, :payload, :subject
  
  def initialize(content)
    @content=content
    @last_line=false
    @payload=""
    content.each{ |line|
      if line =~ /^X-Mail-Created-Date: (.*)/ then
        t=Time.parse($1)
        @creation_date = t
        Debug.trace "Creation date: #{@creation_date}\n"
      elsif line =~ /^Date: (.*)/ then
        t=Time.parse($1)
        @update_date = t
        Debug.trace "Update date: #{@update_date}\n"
      elsif line =~ /^Subject: (.*)/ then
          @subject = $1
          Debug.trace "Subject: #{@subject}\n"
      elsif line =~ /^Content-Type: (.*);/ then
              @content_type = $1
              Debug.trace "Content_type: #{@content_type}\n"
      elsif line=~/^$/ then
        Debug.trace "empty\n"
        @last_line = true
      else
        if @last_line then
          @payload+="#{line}"
          Debug.trace "partial: #{line}\n"
        end         
      end
    } 
  end
  
  def to_xml()
    if @content_type=="text/html"
      Debug.trace("==== html ====\n")
      return payload
    else
      ret=""
      payload.each{|line|
        ret+="<div>#{line}</div>\n"
      }
      return ret
    ret
    end
  end

end


filename="notes/exported plain text.txt"
file=File.open(filename)

text=nil
num=1
file.each{|line|
  if line=~/^\s?From: / then
    if text!=nil then
      textnote=Textnote.new(text)
      evernote=Evernote.new
      evernote.from_text(textnote)

      print "#{num}: #{evernote.title}\n"
      File.open("notes/#{num}.enex", 'w') {|f| f.write(evernote.to_s) }
      
      num+=1;
      
    end
    text=line
  else
    text+=line
  end
  
}

Annunci

13 gennaio 2011

I miei strumenti preferiti per Mac

Filed under: informatica — Zeno @ 11:14

Networking

Chrome

Skype

Adium

uTorrent

Dropbox

Transmit

Chrome extensions

AdBlock

Delicious tools

Google mail checker

RSS Subscription extender

Text editing

TextMate

0xED

Tools

AppZapper

VMWare Fusion

Keyboard Maestro

DaisyDisk

Porticus

The Unarchiver

Colors

Audio / Video

iTunes

VLC

XLD

eBook

iCHM

Calibre

Photo

Aperture


10 gennaio 2011

Disabilitare firewire su Mac

Filed under: informatica — Zeno @ 8:31

You can remove the kernel extension by renaming it, e.g.

 

cd /System/Library/Extensions/
sudo mv IOFireWireFamily.kext IOFireWireFamily.kext_disabled_v10.6.5

 

20 gennaio 2010

Test e definizioni

Filed under: informatica — Zeno @ 15:46
  • Dummy objects are passed around but never actually used. Usually they are just used to fill parameter lists.
  • Fake objects actually have working implementations, but usually take some shortcut which makes them not suitable for production (an in memory database is a good example).
  • Stubs provide canned answers to calls made during the test, usually not responding at all to anything outside what’s programmed in for the test. Stubs may also record information about calls, such as an email gateway stub that remembers the messages it ’sent’, or maybe only how many messages it ’sent’.
  • Mocks are what we are talking about here: objects pre-programmed with expectations which form a specification of the calls they are expected to receive.

19 gennaio 2010

I miei strumenti preferiti per Windows

Filed under: informatica — Zeno @ 19:14

Desktop Tools

Revo Uninstaller Pro : disinstallatore di programmi

Audacity : strumenti per l’elaborazione dell’audio

Recuva : recupera file cancellati

VLC : visualizzatore di video

Paint.NET : editor immagini

Notepad++ : editor di testo

Picasa : visualizzatore di foto

Fences : organizza le icone del desktop

Launchy : lancia i programmi

Unlocker : toglie il lock dai file

Messenger Plus Live : aggiunge funzionalità a messenger

MultiMonitor : aggancia monitor di computer diversi

KGB arch : archiviatore

7zip : archiviatore

Daemon Tools : Virtual CD/DVD drive which supports all popular copy protections.

JDownloader : downloader con riconoscimento di captcha

Security Tools

Malwarebytes’ Anti Malware : Anti malware free

HijackThis : strumento a basso livello per l’identificazione di malware

Sysinternals Suite : decine di piccoli strumenti per Windows

Network tools

WireShark : sniffer

Hamachi2 : crea VPN condivise

Programming tools

HxD Hex Editor : editor esadecimale

Expresso : generatore e analizzatore di espressioni regolari

Redgate SQL Toolbelt : strumenti per operare su database SQL

NUnit : unit tester

MobileMe : proxy per Windows Mobile

CrypTool : strumenti di crittografia

TortoiseSVN : interfaccia ad SVN

DocProject : interfaccia a Sandcastle, genera la documentazione per progetti .NET

R2build : continuous integration, build automation, test nunit

Plugin Visual Studio

Resharper : generatore di codice, tool di refactoring e di identificazione errori

Ghost Doc : facilita la documentazione del codice

Sandcastle : generatore di documentazione

Ankh : interfaccia SVN per Visual Studio

StyleCop : enfornce di regole sintattiche

StudioTools : accesso veloce ai metodi della soluzione

Plugin Firefox

Adblock plus : toglie la pubblicità

Click&Clean : cancella le tracce locali della navigazione

Firebug : analizza una pagina e il flusso d’accesso

Google Shortcuts : aggiunge alcune icone per gli strumenti google

IE tab : permette di aprire link in schede gestite dal motore IE

LastPass : gestore di password

PDF Download : permette di scegliere come scaricare i pdf

Ubiquity : estensione della barra di navigazione, interpreta i comandi

Xmarks : gestore dei bookmarks

Plugin Outlook

xobni

4 dicembre 2009

Pronuncia di Char

Filed under: C, informatica — Zeno @ 13:22

Ebbene, come pronunciate “char”? Come CARattere o come CIARlatano?

Beh, ho scoperto che la pronuncia corretta dipende dall’implementazione!

Infatti:

From Frequently Asked Questions in comp.lang.c

17.30: How do you pronounce “char”?
You can pronounce the C keyword “char” in at least three ways: like the English words “char,” “care,” or “car;” the choice is arbitrary.

From Bjarne Stroustrup’s C++ FAQ:

How do you pronounce “char”?
“char” is usually pronounced “tchar”, not “kar”. This may seem illogical because “character” is pronounced “ka-rak-ter”, but nobody ever accused English pronounciation and spelling of being logical.

30 novembre 2009

F# e C# nello stesso progetto DDD

Filed under: architettura, C#, F#, informatica, Pattern — Tag:, — Zeno @ 11:37

Ho postato una domanda su StackOverflow su come pensare una soluzione che incorpori parti in C# e parti in F#.

Mi chiedo, in sostanza, se abbia senso pensare all’utilizzo di F# in una architettura DDD.

(more…)

27 novembre 2009

Programmazione e arte: Piet

Filed under: informatica, Linguaggi — Tag: — Zeno @ 16:02

Sono incappato in un linguaggio esoterico particolarmente elegante, non tanto per la struttura del linguaggio in se’, piuttosto per la codifica dei sorgenti: Piet.

Per definizione la codifica prende la forma di un’opera d’arte astratta. Infatti gli elementi del linguaggio sono i colori, in una tavolozza di 20 colori. Ogni pixel rappresenta un elemento del codice. L’esecuzione del programma parte dal pixel in alto a sinistra e prosegue verso destra fintanto che la variabile che indica la direzione non viene aggiornata.

La codifica degli operatori non e’ una relazione biunivoca tra i colori e gli opertori, come si potrebbe immaginare. L’operatore e’ determinato dalla variazione di tono e di luminosita’ nel passaggio di un colore all’altro! I valori interi sono calcolati come il numero di pixel di una forma di colore uniforme.

Ecco qualche esempio, tratto da: http://www.dangermouse.net/esoteric/piet/samples.html

Ecco un paio di esempi. Il primo stampa la stringa Piet, il secondo Hello World.

(fonte: http://stackoverflow.com/questions/187715/what-is-your-favorite-esoteric-programming-language)

29 settembre 2009

AES in fumetti

Filed under: informatica — Zeno @ 21:58

Sono impressionato dalla chiarezza espositiva di questo fumetto che parla di AES!

Un fumetto in tre atti che mostra le caratteristiche di Rijandael (che ho scoperto finalmente che si pronuncia reindal, ho sempre emesso dei vocalizzi inquietanti finendo per dire: “beh, AES, ci siamo capiti, no?” :).

7 settembre 2009

Jon Skeet: MoreLINQ now at 1.0 beta

Filed under: C#, informatica — Tag: — Zeno @ 16:46

Jon Skeet pensa che LINQ to Object abbia bisogno di qualche aggiunta. Come dargli torto? :-)

La Beta 1 contiene un insieme interessante di estensioni a IEnumerable, di chiaro interesse.
(more…)

Older Posts »

Blog su WordPress.com.