Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - allegfede

Pagine: 1 ... 3 4 [5] 6 7 ... 12
61
Ho diversi progetti "headless" (ovvero senza necessita' di una interfaccia grafica) che devo dotare di un'interfaccia web.

Questo per renderli configurabili anche da chi con ssh si impicca al primo "ls", o non e' capace di scrivere un file di testo ....

Ho provato con il template webapplication di gambas, ma mi sembra proprio povero ....

In pratica devo leggere dei file di configurazione e disegnare a schermo dei campi di testo e mettere un po di spunte.

Quando premono "apply" scrivere nei file di configurazione i dati modificati ....

che mi consigliate? wordpress/php? ruby on rails? python che odio?

Ma gambas proprio non lo posso usare che mi piace tanto?

62
Progetti degli utenti / sincronizzatore di file
« il: 31 Marzo 2017, 19:00:02 »
piccolo programma (da raffinare) che prende una lista di file da tenere sott'occhio e li copia in caso vengano cambiati/aggiornati/modificati, in una nuova posizione.

qualche piccolo bug c'e' sicuro ma io lo uso.

63
Programmazione / Come nascondere una colonna di una Gridview?
« il: 30 Marzo 2017, 13:19:57 »
Codice: [Seleziona]
Public Sub render_interface()
 
  GridView_FileList.Header = 1
  GridView_FileList.AutoResize = False
 
  GridView_FileList.Columns.Count = 5
  GridView_FileList.Rows.Count = 20
 
  GridView_FileList.Columns[0].Width = 0
  GridView_FileList.Columns[0].Title = "id"
 
  GridView_FileList.Columns[1].W = 0
  GridView_FileList.Columns[1].Title = "check_path"
 
  GridView_FileList.Columns[2].W = 200
  GridView_FileList.Columns[2].Title = "Where to copy"
 
  GridView_FileList.Columns[3].W = 0
  GridView_FileList.Columns[3].Title = "copy_path"
 
  GridView_FileList.Columns[4].W = 1200
  GridView_FileList.Columns[4].Title = "Where to copy"
End


ma le colonne con larghezza 0 sono sempre visibili .... invece io vorrei nasconderle

64
Altri linguaggi / configurare CODE::Blocks e CUDA
« il: 20 Marzo 2017, 21:00:12 »
questa e' una richiesta conto terzi.
Ho un amico programmatore, che scrive in C++ ed usa code-blocks (un ide interessante e free).
Attualmente vorrebbe usare CUDA in un progetto multimediale, ma non riesce ad integrare l'sdk con l'ide.

Qualcuno ha esperienza di questo tipo di cose?

io ed il C siamo su pianeti differenti :D

65
in mysql esiste il tipo di dato time (https://dev.mysql.com/doc/refman/5.7/en/date-and-time-types.html)

come si converte una stringa in formato tempo per inserirla nel db?

66
Programmazione / ricerche condizionate (complesse) con SQL
« il: 03 Febbraio 2017, 14:08:09 »
vorrei restituire all'utente del mio programma i risultati di una query "complessa" fatta al database.
Ovvero l'utente potrebbe chiedere di vedere tutti i file audio che sono (per esempio): rock AND pop NOT italiani

nel record di ogni canzone nel db c'e' un campo tag (stringa) in cui sono elencati i tag che gli sono propri: rock  folk OPPURE italiana tradizionale tarantella OPPURE italiana sanremo

con "select * from canzoni where tag like '%" & filtro & "%'" me la cavo bene con un tag singolo, ma per ricerche piu' complesse e' un problema ....
Come posso fare una ricerca condizoinata con una stringa di ricerca arbitraria (ma formalmente corretta)?

67
Esigenza:
fare un widget che rappresenti i giorni della settimana sotto forma di "interruttore" che possono essere accesi o spenti e che abbiano nome "etichetta" il nome del giorno della settimana.

Interessante sarebbe che in base alla localizzazione, il primo pulsante del vettore i oggetti (di 7 elementi), si chiami Lunedi' in italia, ma Sunday in America del nord.
Infatti per gli anglosassoni il primo giorno della settimana e' domenica.

Qualcuno ha mai avuto un'esigenza del genere?

Qualche trucchetto interessante?

PS: questa "maschera di valiidita'" verra' salvata come binario 1001001 nel db a rappresentare quando il giorno N-simo e' abilitato (1) o no (0) :D

68
Segnalazione bug / [BUG] RDir non funziona su percorsi remoti
« il: 02 Febbraio 2017, 10:10:28 »
vorrei segnalarmi che Rdir nel passaggio da Gambas 3.8.4 a Gambas 3.9.2 ha perso la possibilita' di scansionare cartelle remote.

Questo codice:
Codice: [Seleziona]
Public Sub Form_Open()
Dim oggetto As String
 
  For Each oggetto In RDir("/mnt/Stranamore/Dischi Stranamore 2007", "*.mp3")
    TextArea1.Text = oggetto & gb.CrLf & TextArea1.Text
  Next

End

restituiva con SUCCESSO i file mp3 nelle cartelle (e sottocartelle) con la versione 3.8.4
Ora invece non trova nulla.

Questo codice invece:
Codice: [Seleziona]
Public Sub Form_Open()
Dim oggetto As String
 
  For Each oggetto In RDir(user.home, "*.mp3")
    TextArea1.Text = oggetto & gb.CrLf & TextArea1.Text
  Next

End

funziona in entrambe le versioni

69
Segnalazione bug / chrash nelle connessioni a database mysql remoti
« il: 31 Gennaio 2017, 18:24:54 »
salve, ho recentemente questo crash (versione gambas 3.8.4):
Citazione
** Oops! Internal error! **
** Cannot create signal handler pipes: Troppi file aperti
** Program aborting. Sorry! :-(
** Please send a bug report at gambas@users.sourceforge.net

quando lancio questa procedura (che salva una serie di record in un database):
Codice: [Seleziona]
Public Sub Button_Commit_Click()
Dim $Con As New Connection
Dim $Result As Result

 
  $Con.close()                  ' Close the connection
  $Con.Type = "MySQL"           ' Type of connection
  $Con.Host = TextBox_IP.Text   ' Name of the server
  $Con.Login = TextBox_DBuser.Text    ' User's name for the connection
  $Con.Port = TextBox_Port.Text       ' Port to use in the connection, usually 3306
  $Con.Name = TextBox_DBname.Text     ' Name of the database we want to use
  $Con.Password = TextBox_DBpass.Text ' User's password
 
  Try $Con.Open()
  If Error Then
    message.Error("tentativo di connessione al server non riuscito", "OK")
    TabStrip_Utils.Show
    DB_connected = False
    Return
  Endif

  'se sono arrivato qui' scansiono la lista cercando le righe con id "new" e numero e le inserisco
  Me.Mouse = Mouse.Wait
  ColumnView_Discoteca.MoveFirst
    Repeat
    ColumnView_Discoteca.Item.Selected = True
      If ColumnView_Discoteca.Item.Key Like "new*" Then
        $Result = $Con.Create("canzoni")
        'id e' automatico
        $Result!autore = ColumnView_Discoteca.Item[1]
        $Result!titolo = ColumnView_Discoteca.Item[2]
        $Result!path = ColumnView_Discoteca.Item[3]
        $Result!tag = ColumnView_Discoteca.Item[4]
        $Result!entryin = ColumnView_Discoteca.Item[5]
        '$Result!entryout = CDate(ColumnView_Discoteca.Item[6])
        $Result!entryout = ColumnView_Discoteca.Item[6]
        $Result!introdj = Seconds_From_HMS(ColumnView_Discoteca.Item[7])
        $Result!mix = ColumnView_Discoteca.Item[8]
        $Result!trasmesso = ColumnView_Discoteca.Item[9]
        $Result!data = CDate("01/01/" & ColumnView_Discoteca.Item[10])
        $Result!note = ColumnView_Discoteca.Item[11]
        $Result!durata = ColumnView_Discoteca.Item[12]
        $Result.Update()
        $con.Commit()
        'a questo punto la "riga" non e' piu' NEW
        ColumnView_Discoteca.Item.Picture = PictureBox_Saved.Picture
        Form.Refresh
        ColumnView_Discoteca.Item.EnsureVisible
      Endif
    Until ColumnView_Discoteca.Movenext()
    Me.Mouse = Mouse.Arrow
   
    LoadLibrary()
End

succede (sembrerebbe) solo quando devo aggiungere molte righe nuove ......

70
e' possibile secondo voi fare una scansione integrale di una columnview?

tipo:

dim riga as columnview.item

Codice: [Seleziona]
for each riga in columnview
   if riga[2]=pippo then
      azione
   endif
next

SI, in questo modo:
Codice: [Seleziona]
Public Function PresenteInLista(path As String) As Boolean
Dim presente As Boolean = False
 
  ColumnView_Discoteca.MoveFirst
  Repeat
    ColumnView_Discoteca.Item.Selected = True
    If ColumnView_Discoteca.Item[3] = path Then
      presente = True
      Break
    Endif

  Until ColumnView_Discoteca.Movenext()
 
  Return presente
End

71
alle prese (nuovamente) con il problema di tag ID3 dei file multimediali, mi servirebbe una bella funzione che restituisce una stringa compresa tra' due marcatori.

public function EstraiStringa(stringa as string,leftMarker as string, rightmarker as string) as string

questo perche' alcuni programmi tipo estituiscono una sola riga con tutte le proprieta' in linea.
Tipo (e sfortunatamente il ritorno a capo non funziona sempre ....):
Citazione
id3v1 tag info for /home/v1p3r/Musica/Pokki_DJ_-_Energy_sigletta del calcio a 5.mp3:
Title  :                                 Artist:                               
Album  :                                 Year:     , Genre: Unknown (255)
Comment:                                 Track: 1
id3v2 tag info for /home/v1p3r/Musica/Pokki_DJ_-_Energy_sigletta del calcio a 5.mp3:
COMM (Comments): ()[eng]: http://www.jamendo.com cc_standard
TALB (Album/Movie/Show title): Energy
TCOM (Composer): Pokki DJ
TCON (Content type): Electronic (52)
TENC (Encoded by): Jamendo:http://www.jamendo.com| LAME
TIT2 (Title/songname/content description): Energy
TPE1 (Lead performer(s)/Soloist(s)): Pokki DJ
TRCK (Track number/Position in set): 1
TYER (Year): 2014
WCOP (Copyright/Legal information): http://creativecommons.org/licenses/by/3.0/
WOAF (Official audio file webpage): http://www.jamendo.com/en/track/1282679
WOAR (Official artist/performer webpage): http://www.jamendo.com/en/artist/6135
WOAS (Official audio source webpage): http://www.jamendo.com/en/album/152981
WPUB (Official publisher webpage): http://www.jamendo.com
APIC (Attached picture): (Cover Image)[, 3]: image/jpg, 18747 bytes
TXXX (User defined text information): (Tagging time): 2017-01-30T12:19:13

qualche segnalazione di funzione "magica" interna a gambas3?

io per ora ho fatto cosi':
Codice: [Seleziona]
Public Function EstraiStringa(stringa As String, leftMarker As String, rightMarker As String) As String
Dim appoggio As String
 
  appoggio = Mid(stringa, InStr(stringa, leftMarker) + Len(leftMarker))
 
  appoggio = Left(appoggio, InStr(appoggio, rightMarker) - 1)
 
  Return appoggio
End

72
Il seguente esempio (post numero 10 http://www.gambas-it.org/smf/index.php?topic=5414.msg40479#msg40479) e' ora COMPLETO e FUNZIONANTE
Citazione
Premettiamo che il seguente esempio e' attualemente INCOMPLETO, poiche' il file audio viene APERTO, ma non riprodotto.

Specifichiamo che l'interfacciamento tra' il programma in GAMBAS e il server audio JACK e' ottenuto ESCLUSIVAMENTE con risorse interne a GAMBAS, ovvero il componente GB.MEDIA

in pratica mi e' passata per la mente l'idea che potesse esserci un "plug in" di gstreamer che potese interfacciarsi con JACK AUDIO e cercando su google e' venuto fuori che  "jackaudiosink" potrebbe essere cio' che ci necessita ().

testando il nostro server audio jack (che deve essere in esecuzione. Vi consiglio l'ottimo QJACKCTL) con questa riga da terminale:
Codice: [Seleziona]
 gst-launch audiotestsrc ! jackaudiosink
possiamo vedere nelle connessioni che viene creato un "CAVO" tra' la sorgente (il programma  gst-launch) e la destinazione (di default il primo canale audio d'uscita disponibile della vostra scheda audio).

quindi parafrasando i vari esempi presenti sul wiki di gambas italia relativi alal gestione del VIDEO, ho cambiato un po' le cose:
Codice: [Seleziona]
' Gambas class file

Private Player_A As MediaPlayer   'player che gestira' i media con gb.media (gstreamer)
Private UscitaAudio As MediaControl 'l'ambito di rendering dei media

Public Sub Button1_Click()

  Dialog.Filter = ["*.mp3", "file audio mp3", "*", "All files"]

  If Dialog.OpenFile() Then
    Return ' User pressed Cancel -
    Else
      Label1.Text = Dialog.Path
      Button2.Enabled = True
  Endif

End

Public Sub Button2_Click()
  Try Player_A.Close

  Player_A = New MediaPlayer As "MediaPlayer"
  'se vuoi riprodurre il media nell'ambiente VERO usa questo
  UscitaAudio = New MediaControl(Player_A, "jackaudiosink")
 
  Button2.Enabled = False
  Button3.Enabled = True

End

Public Sub Button3_Click()

  Player_A.URL = Media.URL(Label1.Text)
  Player_A.Play
 
  Button4.Enabled = True
  Button5.Enabled = False
 
  Timer1.Start
 
End

Public Sub Timer1_Timer()

  ProgressBar1.Value = Player_A.Position / Player_A.Duration

End

Public Sub Button4_Click()
  Timer1.Stop

  Try Player_A.Stop
  Button5.Enabled = True

End

Public Sub Button5_Click()

  Try Player_A.Close
 
  Button2.Enabled = True
  Button3.Enabled = False
  Button4.Enabled = False
  Button5.Enabled = False

End

in allegato il progetto d'esempio.

PS: perche' il file non vada in play ancora non lo so'. Ipotizzo che non sia stato creato "in automatico" il client di jack. Quindi dovro' scoprire come rendere "edotto" il server audio jack della nostra esistenza. Stay tuned


https://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-plugin-jack.html

73
Programmazione / [RISOLTO] Troppi thread di gstreamer aperti?
« il: 23 Gennaio 2017, 19:54:27 »
Salve e ben ritrovati.
Ultimamente sto mettendo mano al progetto di automazione radiofonica e dopo il modulo di "installazione", sono passato al modulo per l'ingesting delle canzoni nella libreria.

Pero' nel momento che scansiono una cartella con molti file audio, sembrerebbe che gstreamer si incavoli e crasci (immagine allegata).

Da quel monento in poi non ri riesce piu' a far andare la procedura (qui sotto), e tutti i file dal crash in poi, falliscono l'estrazione di informazioni.
Codice: [Seleziona]
Public Sub GetInfo(filepath As String)
Dim sOutput As String
Dim aScan As String[]
Dim NomeFile As String
Dim Anno As String
Dim Appoggio As Integer

Try Player_A.Close

Player_A = New MediaPlayer As "MediaPlayer"
'se vuoi riprodurre il media nell'ambiente VERO usa questo
'UscitaAudio = New MediaControl(Player_A, "ximagesink")

'senno' per sveltire si puo' usare un FAKE sink
'UscitaAudio = New MediaControl(Player_A, "fakesink") 
 
  NomeFile = File.BaseName(filepath)
 
  Select Case LCase(File.Ext(filepath))
   
    Case "mp3"
      'prova ad estrarre i dati dai TAG mp3
      TAG_mp3.lettura(filepath)
     
      'controllo se i dati sono presenti e semmai li estraggo dalla struttura del nome della canzone
     
      '---ANNO---- (prima facevo con 'Exec ["mp3info", "-p", "%y", filepath] To sOutput
      If Mp3_Tag_anno <> "" Then         'se ci sono informazioni nell'ID3 tag
        TextBox_year.Text = Mp3_Tag_anno
        Else                        'altrimenti dal nome del file (tra parentesi l'anno)
          anno = Mid(NomeFile, InStr(nomefile, "(") + 1)
          anno = Mid(anno, 1, InStr(anno, ")") - 1)
          Try appoggio = CInt(anno)
          If Error Then
            TextBox_year.Text = Year(Date)
            Else
              TextBox_year.Text = appoggio
          Endif
          'dopo di che elimino l'eventuale anno dal nome del file
          nomefile = Replace(nomefile, "(" & TextBox_year.Text & ")", "")
      Endif
     

      '--- ARTISTA --- (prima facevo con ' Exec ["mp3info", "-p", "%a", filepath] To sOutput
      If Mp3_Tag_artista <> "" Then   'con dati nell'ID3 tag
        TextBox_artist.Text = Mp3_Tag_artista
        Else  'altrimenti dal nome del file (prima parte e' l'autore
          TextBox_artist.Text = Trim(Mid(NomeFile, 1, InStr(nomefile, " - ") - 1))
      Endif
     
      '--- TITOLO della canzone --- (prima facevo con ' Exec ["mp3info", "-p", "%t", filepath] To sOutput
      If Mp3_Tag_titolo <> "" Then   'dall'ID3 tag
        TextBox_title.Text = Mp3_Tag_titolo
        Else  'oppure dal file name .... quello rimanente dopo il trattino e' il titolo del pezzo
          TextBox_title.Text = Trim(Mid(NomeFile, InStr(nomefile, " - ") + 2))
      Endif
     
      '--- DURATA della canzone --- (prima usavo ' Exec ["mp3info", "-p", "%S", filepath] To sOutput
      If Mp3_Tag_lunghezza <> "" Then 'dall'ID3 tag
        Label_Duration.Text = Time(0, 0, CInteger(Mp3_Tag_lunghezza))
        Else  'oppure dalle proprieta' del lettore
            Player_A.URL = Media.URL(filepath)
            Try Player_A.Play
            If Error Then
              Debug Error.Text & " on " & filepath
              Else
                While Player_A.Duration = 0
                  Wait 0.1
                Wend
            Endif
           
           
            Label_Duration.Text = HMS_From_Seconds(CString(Player_A.Duration))
            Player_A.Stop
            Player_A.Close
      End If
     
      Label_EntryIN.Text = "00:00:00"
      Label_EntryOUT.Text = Label_Duration.Text
      Label_DJ.Text = "00:00:00"
     
      '--- ALBUM ---- prima usavo 'Exec ["mp3info", "-p", "%l", filepath] To sOutput
      TextBox_album.Text = Mp3_Tag_album 
      TextArea_Comments.Text = "album: " & Mp3_Tag_album & Chr(10) 'prima era sOutput
     
      '--- NUMERO della TRACCIA --- prima usavo ' Exec ["mp3info", "-p", "%n", filepath] To sOutput
      TextBox_Track.Text = Mp3_Tag_traccia
      TextArea_Comments.Text = TextArea_Comments.Text & "track # " & Mp3_Tag_traccia & Chr(10)  'prima era sOutput
     
      '--- NOTE varie ---- prima usavo ' Exec ["mp3info", "-p", "%c", filepath] To sOutput
      TextArea_Comments.Text = TextArea_Comments.Text & Mp3_Tag_commento 'prima era sOutput
     
      If Mp3_Tag_genere <> "" Then TextArea_TAGS.Text = TextArea_TAGS.Text & Mp3_Tag_genere
     
      Try Player_A.Close
     
    Case "ogg", "flac"
      Exec ["ogginfo", filepath] To sOutput
      For Each sOutput In Split(sOutput, "\n")
        sOutput = Trim(sOutput)
        aScan = Scan(sOutput, "*: *m:*s")
         If aScan.Count = 3 Then
          'Return CInt(CInt(aScan[1]) * 60 + CFloat(Replace(aScan[2], ",", ".")) + 0.5)
         Endif
      Next
   
  End Select

End

In teoria penso di istanziare come si deve il player (aprendolo, leggendo e chiudendo). Non riesco a capire perche' gstremer non rilasci le risorse e si pianti.

Idee?

PS: gia' ho dovuto evitare un fake sink per leggere i file perche' senno' gambas non mi faceva il refresh del form (progress bar), ma introdurre una pausa per sgravare gstremer mi sembra una lungaggine ....

74
Qualche tempo fa' i gentili amici gambassiani mi hanno dato una mano ad intercettare la richiesta di ciusura di una applicazione (attraverso il widget X) per fare una serie di cose prima di chiudere (o rigettare proprio la chiusura).

Un po come quando si chiude Libreoffice senza aver salvato ...

Ora vorrei intercettare la richiesta di chiusura dell'applicazione gambas da parte el sistema operativo (o da parte dell'utente quando preme il pulsante STOP nell'ide di gambas).

E' possibile fare una cosa similare?

l'evento DEACTIVATE non si puo' usare, perche' viene lanciato anche semplicemente la finestra dell'app viene nascosta da altre finestre del desktop manager.
l'evento CLOSE non me lo lancia proprio ..... stranamente ....

Non so cosa inventarmi per terminare i processi figli che il mio applicativo lancia dopo il suo avvio.

75
Perche' non esiste (o esiste?) un comando che copi una cartella da un percorso A ad un percorso B?

con la shell e' abbastanza facile, ma desidererei tanto un comando interno a gambas :D

shell:
"cp -R source destination/"

gambas:
dircopy(source,destination ,true) il true se ricorsiva .... (se la cartella destination non c'e' la crea ...)


Pagine: 1 ... 3 4 [5] 6 7 ... 12