Inviare messaggi Telegram da un BOT a canali e gruppi

Innanzitutto è necessario aggiungere il bot come membro del gruppo / amministratore del canale. Per utilizzare le API è invece indispensabile ottenere il Chat ID, vediamo dunque come fare.

Per ottenere il chat_id di un gruppo, accedete al gruppo tramite Telegram Web. L’indirizzo sarà del tipo:

https://web.telegram.org/#/im?p=g123456789

l’ID del gruppo è -123456789

Nel caso invece di canali, l’indirizzo sarà del tipo:

https://web.telegram.org/#/im?p=c123456789_18380566540292710455

l’ID da utilizzare per inviare messaggi nel canale è -100123456789 (aggiungete -100 al numero che segue la c)

Impossibile avviare SQL Server su CentOS7

Se riscontrate problemi nell'avvio di SQL Server su CentOS, è possibile che l'utente non abbia i permessi per accedere ad alcune risorse. 
Per avviare il servizio da riga di comando (bypassando systemctl) e per vedere il log di avvio usate il comando:

sudo -u mssql /opt/mssql/bin/sqlservr

In caso di problemi, provate questi comandi:
# assicuriamoci che queste cartelle esistano
sudo mkdir /var/opt/mssql /var/opt/mssql/.system /var/opt/mssql/data /var/opt/mssql/log

# le cartelle devono essere di poprietà dell'utente mssql
sudo chown -R  mssql:mssql /var/opt/mssql
sudo chmod 770 /var/opt/mssql

# per questa cartella root deve essere il proprietario
sudo chown -R root:root /opt/mssql

sudo chown -R  mssql:mssql /var/log/messages

Estrarre testo multi-colonne da un PDF all’interno dell’area visibile

Per estrarre il testo da un PDF con iTextSharp è sufficiente utilizzare la SimpleTextExtractionStrategy. Il vantaggio di questo metodo è che il testo disposto su più colonne viene letto in maniera corretta. Utilizzando la LocationTextExtractionStrategy, il testo su più colonne viene letto per linee, quindi non è utilizzabile per ricavare il testo completo da un PDF. Il problema della SimpleTextExtractionStrategy è dovuto al fatto che legge il contenuto anche dell’area non visibile (esterna al MediaBox ) del PDF. Per ovviare a questo difetto, è sufficiente combinare tale strategia con il REgionTextRendereFilter, passando il riquadro visibile (MediaBox):

Dim rect As Rectangle = fp.GetPageSize(1)
Dim fp As New PdfReader(filename)
Dim filters() As RenderFilter = {New RegionTextRenderFilter(rect)}
Dim strat As ITextExtractionStrategy = New FilteredTextRenderListener(New SimpleTextExtractionStrategy, filters)
curText = PdfTextExtractor.GetTextFromPage(fp, 1, strat)

Comandi speciali per crontab

Al posto dei primi cinque campi è possibile inserire particolari stringhe che il demone Cron interpreta come valori corretti per i campi data/ora:

   stringa        significato    
@reboot Lancia il comando all'avvio del sistema
@yearly Lancia il comando una volta all'anno. Uguale a "0 0 1 1 *"
@annually (come @yearly)
@monthly Lancia il comando una volta al mese. Uguale a "0 0 1 * *"
@weekly Lancia il comando una volta alla settimana. Uguale a "0 0 * * 0"
@daily Lancia il comando una volta al giorno. Uguale a "0 0 * * *"
@midnight (come @daily)
@hourly Lancia il comando una volta all'ora. Uguale a "0 * * * *"