package Ġcom . r 3 . con clave . samples . tri bu o . client Ċ Ċ import Ġcom . r 3 . con clave . common . En clave Instance Info Ċ import Ġcom . r 3 . con clave . common . En clave Mode Ċ import Ġcom . r 3 . con clave . mail . En clave Mail Ċ import Ġcom . r 3 . con clave . mail . Post Office Ċ import Ġcom . r 3 . con clave . samples . tri bu o . common . Configuration . Companion . MN IST _ LOG ISTIC _ CONFIG _ FILE _ NAME Ċ import Ġcom . r 3 . con clave . samples . tri bu o . common . Configuration . Companion . MN IST _ TRANS FOR MED _ LOG ISTIC _ CONFIG _ FILE _ NAME Ċ import Ġcom . r 3 . con clave . samples . tri bu o . common . Tri bu o Task Ċ import Ġcom . r 3 . con clave . samples . tri bu o . common . decode Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . io . Closeable Ċ import Ġjava . io . Data InputStream Ċ import Ġjava . io . Data OutputStream Ċ import Ġjava . io . IOException Ċ import Ġjava . net . Inet Address Ċ import Ġjava . net . Inet SocketAddress Ċ import Ġjava . net . Socket Ċ Ċ /** Ċ Ġ* Ġ@ param Ġargs Ġ[ En clave Configuration ] Ġarguments . ĠSee Ġ[ En clave Configuration ] Ġto Ġunderstand Ġhow Ġthey Ġare Ġbeing Ġprocessed . Ċ Ġ*/ Ċ class ĠClient ( args : ĠArray < String >) Ġ: ĠClose able Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDEFAULT _ ADDRESS Ġ= ĠInet Address . get Loop back Address () !! ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ PORT Ġ= Ġ 9 9 9 9 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ TIMEOUT Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLogger ( LoggerFactory . getLogger ( Client :: class . java )) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClient ( args ). use Ġ{ Ġclient Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclassification ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclustering ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregression ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġanomaly Detection ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconfiguration ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRun Ġthe Ġ[ Classification ] Ġtutorial Ġsteps . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġclassification ( client : ĠClient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClassification ( client ). use Ġ{ Ġclassification Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġdata Ġstats ", Ġclassification . data Stats ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġtrainer Ġinfo ", Ġclassification . trainer Info ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġevaluation Ġsummary ", Ġclassification . train And Evaluate (). summary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġconfusion Ġmatrix ", Ġclassification . confusion Matrix (). summary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġserialized Model Ġ= Ġclassification . serialized Model () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġmodel Ġmetadata ", Ġclassification . model Metadata ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġmodel Ġpro venance ", Ġclassification . model Provenance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġjson Ġpro venance ", Ġclassification . json Provenance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Classification Ġload Ġmodel ", Ġclassification . load Model ( serialized Model )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRun Ġthe Ġ[ Cluster ing ] Ġtutorial Ġsteps . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġclustering ( client : ĠClient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġclustering Ġ= ĠCluster ing ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Cluster ing Ġtrain Ġevaluation ", Ġclustering . train ( Cluster ing . centroid s , ĠCluster ing . iterations , ĠCluster ing . distance Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCluster ing . num Threads , ĠCluster ing . seed )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Cluster ing Ġcentroid s ", Ġclustering . centroid s ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Cluster ing Ġtest Ġevaluation ", Ġclustering . evaluate ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRun Ġthe Ġ[ Regression ] Ġtutorial Ġsteps . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġregression ( client : ĠClient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRegression ( client ). use Ġ{ Ġregression Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Regression ĠS GD Ġevaluation ", Ġregression . train SG D ( Regression . epochs , ĠRegression . seed )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Regression ĠAda Grad Ġevaluation ", Ġregression . train Ad a Grad ( Regression . epochs , ĠRegression . seed )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Regression ĠC ART Ġevaluation ", Ġregression . train C ART ( Regression . max Depth )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRun Ġthe Ġ[ An omaly Detection ] Ġtutorial Ġsteps . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġanomaly Detection ( client : ĠClient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġanomaly Detection Ġ= ĠAn omaly Detection ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" An omaly Ġevaluation ", Ġanomaly Detection . train And Evaluate ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" An omaly Ġconfusion Ġmatrix ", Ġanomaly Detection . confusion Matrix ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRun Ġthe Ġ[ Configuration ] Ġtutorial Ġsteps . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġconfiguration ( client : ĠClient ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConfiguration ( client ). use Ġ{ Ġconfiguration Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġdata Ġstats ", Ġconfiguration . data Stats ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġlogist ic Ġtrainer ", Ġconfiguration . initialize Log istic Trainer ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġ$ MN IST _ LOG ISTIC _ CONFIG _ FILE _ NAME ", ĠString ( configuration . mnist Log istic Config ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġlr Evaluator ", Ġconfiguration . lr Evaluator (). summary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġlr Evaluator Ġconfusion Ġmatrix ", Ġconfiguration . lr Evaluator Conf usion Matrix (). summary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġnew Evaluator ", Ġconfiguration . new Evaluator (). summary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġnew Evaluator Ġconfusion Ġmatrix ", Ġconfiguration . new Evaluator Conf usion Matrix (). summary ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġnew Evaluator Ġpro venance ", Ġconfiguration . new Evaluator Provenance ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġtransformed Ġevaluator ", Ġconfiguration . transformed Evaluator ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġtransformed Ġevaluator Ġconfusion Ġmatrix ", Ġconfiguration . transformed Evaluator Conf usion Matrix ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" Configuration Ġ$ MN IST _ TRANS FOR MED _ LOG ISTIC _ CONFIG _ FILE _ NAME ", ĠString ( configuration . mnist Trans formed Log istic Config ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġen clave Configuration Ġ= ĠEn clave Configuration ( this , ĠEn clave Mode . valueOf ( System . getProperty (" en clave Mode "). toUpperCase ()), Ġargs ) ĊĠĠĠ Ġprivate Ġvar Ġsocket : ĠSocket ĊĠĠĠ Ġprivate Ġvar Ġfrom Host : ĠData InputStream ĊĠĠĠ Ġprivate Ġvar Ġto Host : ĠData OutputStream ĊĠĠĠ Ġprivate Ġvar Ġpost Office : ĠPost Office ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" At tempting Ġto Ġconnect Ġto Ġ" Ġ+ ĠDEFAULT _ ADDRESS . canonical HostName Ġ+ Ġ':' Ġ+ ĠDEFAULT _ PORT ) ĊĠĠĠĠĠĠĠ Ġsocket Ġ= ĠSocket () ĊĠĠĠĠĠĠĠ Ġsocket . connect ( Inet SocketAddress ( DEFAULT _ ADDRESS , ĠDEFAULT _ PORT ), ĠDEFAULT _ TIMEOUT ) ĊĠĠĠĠĠĠĠ Ġfrom Host Ġ= ĠData InputStream ( socket . getInputStream ()) ĊĠĠĠĠĠĠĠ Ġto Host Ġ= ĠData OutputStream ( socket . get OutputStream ()) ĊĠĠĠĠĠĠĠ Ġval Ġat testation Ġ= Ġreceive At testation () ĊĠĠĠĠĠĠĠ Ġlog . info (" Connected Ġto ", Ġat testation ) ĊĠĠĠĠĠĠĠ Ġen clave Configuration . en clave Instance Info Checker . check ( at testation ) ĊĠĠĠĠĠĠĠ Ġpost Office Ġ= Ġat testation . create Post Office () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġprivate Ġfun Ġreceive At testation (): ĠEn clave Instance Info Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġat testation Bytes Ġ= ĠByteArray ( from Host . readInt ()) ĊĠĠĠĠĠĠĠ Ġfrom Host . read Fully ( at testation Bytes ) ĊĠĠĠĠĠĠĠ Ġreturn ĠEn clave Instance Info . deserialize ( at testation Bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġsend Mail ( body : ĠByteArray ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Mail Ġ= Ġpost Office . encrypt Mail ( body ) ĊĠĠĠĠĠĠĠ Ġto Host . writeInt ( encrypted Mail . size ) ĊĠĠĠĠĠĠĠ Ġto Host . write ( encrypted Mail ) ĊĠĠĠĠĠĠĠ Ġto Host . flush () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġfun Ġreceive Mail (): ĠEn clave Mail Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Reply Ġ= ĠByteArray ( from Host . readInt ()) ĊĠĠĠĠĠĠĠ Ġfrom Host . read Fully ( encrypted Reply ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpost Office . decrypt Mail ( encrypted Reply ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSerialize Ġand Ġsend Ġa Ġrequest Ġto Ġthe Ġen clave Ġand Ġdeserialize Ġthe Ġresponse . ĊĠĠĠĠ Ġ* Ġ@ param Ġtask Ġthe Ġrequest Ġto Ġthe Ġen clave . ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdeserialized Ġresponse Ġfrom Ġthe Ġen clave . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠR > Ġsend And Receive ( task : ĠT ribu o Task ): ĠR Ġ{ ĊĠĠĠĠĠĠĠ Ġsend Mail ( task . encode ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġdecode ( receive Mail (). body As Bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġa Ġrequest Ġto Ġthe Ġen clave Ġto Ġwrite Ġa Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġpath Ġfile Ġpath . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontent Modifier Ġfunction Ġto Ġmodify Ġthe Ġfile Ġcontents Ġbefore Ġsending Ġit Ġto Ġthe Ġen clave . ĊĠĠĠĠ Ġ* ĠOnly Ġused Ġin Ġmock Ġmode . ĊĠĠĠĠ Ġ* Ġ@ return Ġfile Ġpath Ġin Ġthe Ġen clave . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsend Resource ( path : ĠString , Ġcontent Modifier : Ġ(( ByteArray ) Ġ-> Ġ( ByteArray )) ? Ġ= Ġnull ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġen clave Configuration . file Manager . send File ( path , Ġcontent Modifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġa Ġrequest Ġto Ġthe Ġen clave Ġto Ġdelete Ġa Ġfile . ĊĠĠĠĠ Ġ* Ġ@ param Ġpath Ġfile Ġpath . ĊĠĠĠĠ Ġ* Ġ@ param Ġcontent Modifier Ġfunction Ġto Ġmodify Ġthe Ġfile Ġcontent Ġinstead Ġof Ġdeleting Ġit . ĊĠĠĠĠ Ġ* ĠOnly Ġused Ġin Ġmock Ġmode . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete File ( path : ĠString , Ġcontent Modifier : Ġ(( ByteArray ) Ġ-> Ġ( ByteArray )) ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġen clave Configuration . file Manager . delete File ( path , Ġcontent Modifier ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġfrom Host . close () ĊĠĠĠĠĠĠĠ Ġto Host . close () ĊĠĠĠĠĠĠĠ Ġsocket . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġresolve ( path : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġen clave Configuration . file Manager . resolve ( path ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLogger ( private Ġval Ġlogger : ĠLogger ) Ġ{ ĊĠĠĠ Ġfun Ġinfo ( header : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ( header ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġinfo ( header : ĠString , Ġbody : ĠAny ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info ("$ header ${ System . line Separator ()} $ body ") ĊĠĠĠ Ġ} Ċ }