Un po’ di novità!

Ben due settimane senza scrivere nulla! WoW!

Ebbene, torno con non poche novità, prime fra tutte quelle inerenti JLS e i prossimi rilasci. Dunque tra poco, molto probabilmente questa sera stessa, verrà rilasciato JavaLightServer versione 0.4.2 contenente molte bugfix e migliorie soprattutto nei comandi CWD e LS, inoltre, non appena rilasciata, mi metto subito a lavoro a tempo pieno (soprattutto ora che sono in vacanza) sulla versione 0.5 dove ci saranno pesanti migliorie lato server e non meno importanti aggiornamenti lato client:

  1. Possibilità di gestione del server da parte degli utenti locali del server in maniera live -compresa la configurazione-
  2. Miglioramenti nei comandi:
    • DF;
    • MSG;
    • Gli altri sono sotto analisi, per ora questi sono sicuri
  3. Prime bozze di una GUI più completa ed integrata per il Server;
  4. Miglioramenti nel Client e sviluppo di una struttura adatta alla versione 0.6.
  5. Jls Configuration Manager versione 0.2;
  6. Gestore dei comandi – ci sarà la possibilità di abilitare, tramite il file di configurazione (quindi lato server), o meno alcuni comandi rispetto ad altri, quindi ad es. si potrebbe dedicare un Host JLS per una chat privata tenendolo il più leggero possibile grazie alla disabilitazione degli altri comandi, inutili per quello scopo-

Queste sono le principali novità di cui goderà JavaLightServer versione 0.5. Colgo l’occasione per annunciare che con la versione 0.5 si conclude il ciclo delle Alpha, quindi dalla 0.6 JLS sarà un software abbastanza adulto da poter iniziare ad essere usato (e sperimentato) anche oltre la “comune” rete LAN di casa, io stesso per primo lo sperimenterò, quindi lo stadio di sviluppo del progetto diverrà Beta. Infine c’è da dire che JLS 0.5.y sarà l’ultimo ciclo di versioni che supporterà ancora la connessione via client Telnet, quindi dalla 0.6 sarà d’obbligo l’utilizzo del JavaLightClient per testare ed/od usare JLS.

Ultima notizia, ma non per questo meno importante, pubblicherò qui sul mio blog (e ovviamente anche sul sito della comunità ufficiale) una serie di mini-howto per tutti gli utenti e/o sviluppatori interessati al progetto, quindi partendo da un primo che si occuperà di spiegare come funziona la struttura del programma ai successivi che ne studieranno le funzioni e il loro utilizzo anche in altri progetti basati su questo.

Saluti
hawake

OpenSuSE 11 Alpha0

E’ stato annunciato da qualche giorno il rilascio ufficiale di OpenSuSE 11 Alpha0. Essa contiene tutti gli ultimissimi pacchetti base aggiornati alle ultimissime versioni (kernel 2.6.24, KDE 3.5.8, GCC 4.3, KDE 4 RC1 …). Inoltre ci sono alcuni cambiamenti nel modulo di YaST di gestione delle sorgenti, unendo le sorgenti d’installazione classiche con quelle della comunità, cosa che IMHO speravo da tempo. Ovviamente essendo un’alpha ha ancora moltissimi problemi… ad es. è inevitabile almeno un crash durante l’installazione…

Il link alla notizia è qui: http://news.opensuse.org/?p=563.

Saluti
hawake

NetBeans 6.0 rilasciato!

Ieri è uscito finalmente NetBeans 6.0 release Stable! Fantastico, lo stò già testando con JLS. Devo dire che è un po’ più lentino del 5.5 forse sarà dovuto alla poca RAM di cui dispongo (768 MB), fattostà, però, che i programmatori dietro questo IDE hanno fatto veramente un ottimo lavoro. Tra una settimana potrò dire meglio e con più certezza di come effettivamente ci si trova con questo programma.

Saluti
hawake

Il client inizia a crescere…

Ieri notte, con Tommy, abbiamo risolto un paio di bachi nel client di JLS (che ancora deve essere rilasciato).

Adesso i comandi che vengono implementati nel client arrivano al server senza problemi, il problema l’abbiamo risolto riscrivendo una parte del server (quella, appunto, di gestione delle socket) ma credo proprio che dovremo riscrivere praticamente tutto JLS, principale, dato che per lo scambio di dati (e anche per il download/upload) dovrò implementare il tutto affinché sia il più veloce possibile.

Eccovi il codice:
-questa è la main-
/*
* JavaLightServer - Interactive Shell Client 0.1
* Also knowed as JavaLightClient -
* Copyright (C) 2007 hawake - hawake[at]gmail[dot]it
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see
*/
package JLC;
import java.io.*;
import java.net.*;
public class JavaLightClient {
public static void main(String [] args) throws UnknownHostException, IOException, Exception {
try {
if(args[0] != null && args[1] != null) {
int ArgsParsed = Integer.parseInt(args[1]);
String command = "";
boolean finito = false;
String ciao = "127.0.0.1";
Client client = new Client();
client.connect(ciao, ArgsParsed);
System.out.println("\nConnected to " + ciao + " port: " + ArgsParsed + "; your IP is: " + client.address());
String welcome = client.read();
if(welcome != null) {
System.out.println(welcome);
}
while (!finito) {
InputStreamReader tastiera = new InputStreamReader(System.in);
BufferedReader buf = new BufferedReader(tastiera);
command = buf.readLine();
if (command.equals("ls")) {
client.send((command+"\n").getBytes());
System.out.println(client.read());
} else if (command.equals("exit")) {
client.send(command.getBytes());
client.read();
client.close();
finito = true;
}
}
}
} catch (ArrayIndexOutOfBoundsException e) {
System.out.println("\nJavaLightClient 0.1 console version\nUsage:\n\tjava JavaLightClient [IP] [port]");
}
}
}

e della classe Client, che gestisce la comunicazione e la socket:
package JLC;
import java.io.*;
import java.net.*;
class Client {
public Client(Socket s) throws IOException {
this.initialized = true ;
this.socket = s;
this.input = this.socket.getInputStream();
this.output = this.socket.getOutputStream();
}
public Client() {
this.initialized = false ;
this.socket = null;
}
public String address() {
return this.socket.getInetAddress().toString();
}
public void connect( String host, int port) throws UnknownHostException, IOException {
if( !this.initialized )
this.socket = new Socket(host,port);
this.input = this.socket.getInputStream();
this.output = this.socket.getOutputStream();
}
public void send(byte[] byteStream) throws IOException {
this.output.write(byteStream);
this.output.flush();
}
public String read() throws IOException{
String buffer = "";
byte b;
while( (b = (byte)this.input.read()) != (byte)'\n' ) {
buffer += (char)b;
}
return buffer.trim();
}
public void close() throws Exception {
this.input.close();
this.output.close();
}
private Socket socket = null;
private InputStream input ;
private OutputStream output ;
private boolean initialized = false ;
}

Il tutto rilasciato ovviamente sotto GNU GPL v3.

Saluti
hawake