<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx</link><description>Πριν από λίγες μέρες, ένας φίλος μου έστειλε ένα programming puzzle που του τέθηκε κατά την διάρκεια ενός job interview. Το σκέφτηκα για λίγο και του έστειλα μια πρόχειρη λύση. Με το που είδε τον κώδικα που του έστειλα, μου απάντησε ότι αποκλείεται να</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59000</link><pubDate>Mon, 07 Jun 2010 06:41:56 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59000</guid><dc:creator>Panagiotis Kefalidis</dc:creator><description>&lt;p&gt;Μαλλον εγώ δεν πιάνω κατι, αλλά όταν λες χωρίς condition; Πως θα δεις εάν το flag έχει τιμή false ή οχι; Εννοώ μέσα σε Lambda statement το !flag πχ ή το flag == false κλπ, δεν παίζει σαν σενάριο;&lt;/p&gt;
&lt;p&gt;Γιατί έγραψα κάτι, αλλά με τον παραπάνω τρόπο.&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59002</link><pubDate>Mon, 07 Jun 2010 07:07:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59002</guid><dc:creator>PALLADIN</dc:creator><description>&lt;p&gt;Nai prepei i lisi na min exei katholou conditional logic.&lt;/p&gt;
&lt;p&gt;To desirable effect tis class einai san cache...&lt;/p&gt;
&lt;p&gt;Thunk&amp;lt;int&amp;gt; thunk = new Thunk&amp;lt;int&amp;gt;(() =&amp;gt; { Console.WriteLine(&amp;quot;Side effect&amp;quot;); return 42; });&lt;/p&gt;
&lt;p&gt;int value = thunk.Value; // Output: Side effect value = 42&lt;/p&gt;
&lt;p&gt;value = thunk.Value; // cached value = 42 without side effects&lt;/p&gt;
&lt;p&gt;Diladi i nea ilopoiisi prepei na exei tin idia simperifora (me to pou zito tin timi simbenei to computation kai cacharete gia tis epomenes kliseis) alla xoris conditional logic.&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59003</link><pubDate>Mon, 07 Jun 2010 07:08:42 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59003</guid><dc:creator>Markos</dc:creator><description>&lt;p&gt;Εγώ πάλι δεν καταλαβαίνω τι χρειάζεται το flag και ο private delegate func. Έτσι κι αλλιώς δεν υπάρχει default (parameterless) constructor και, αν δεν κάνω λάθος, η παραπάνω κλάση μπορεί να γραφτεί:&lt;/p&gt;
&lt;p&gt;public class Thunk&amp;lt;T&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private T value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public T Value&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Thunk(Func&amp;lt;T&amp;gt; func)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.value = func();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59004</link><pubDate>Mon, 07 Jun 2010 07:38:30 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59004</guid><dc:creator>Panagiotis Kefalidis</dc:creator><description>&lt;p&gt;Α μάλιστα, τώρα κατάλαβα.. Αν και τώρα νυστάζω οπότε θα το δω αύριο.. Τόσο απλό αλλά τόσο ενδιαφέρον.&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59005</link><pubDate>Mon, 07 Jun 2010 08:00:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59005</guid><dc:creator>darklynx</dc:creator><description>&lt;p&gt;Το να εκτελέσεις την func στον constructor παρότι δείχνει βολική λύση είναι διαφορετική υλοποίηση από την δοθείσα αρχική,διότι λογικά δε θα θέλουμε να εκτελεστεί ο κώδικας της func παρά μόνο όταν ζητήσουμε για πρώτη φορά την τιμή της Value.&lt;/p&gt;
&lt;p&gt;Το πρόβλημα με τη συνθήκη της άσκησης να μη χρησιμοποιήσουμε καθόλου conditional logic είναι ότι conditional logic κρύβεται σε πολλά σημεία.Π.χ αν στην υλοποίησή μας χρησιμοποιούσαμε foreach θα μέτραγε για conditional logic (παρεπιπτόντως μέσω αυτής βρήκα την πρώτη μου υλοποίηση,η δεύτερη που σκέφτηκα είναι λίγο πιο μακροσκελής και χρησιμοποιεί περισσότερο funcional programming από ότι η δοθείσα αρχική κλάση).&lt;/p&gt;</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59006</link><pubDate>Mon, 07 Jun 2010 08:01:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59006</guid><dc:creator>darklynx</dc:creator><description>&lt;p&gt;Το να εκτελέσεις την func στον constructor παρότι δείχνει βολική λύση είναι διαφορετική υλοποίηση από την δοθείσα αρχική,διότι λογικά δε θα θέλουμε να εκτελεστεί ο κώδικας της func παρά μόνο όταν ζητήσουμε για πρώτη φορά την τιμή της Value.&lt;/p&gt;
&lt;p&gt;Το πρόβλημα με τη συνθήκη της άσκησης να μη χρησιμοποιήσουμε καθόλου conditional logic είναι ότι conditional logic κρύβεται σε πολλά σημεία.Π.χ αν στην υλοποίησή μας χρησιμοποιούσαμε foreach θα μέτραγε για conditional logic (παρεπιπτόντως μέσω αυτής βρήκα την πρώτη μου υλοποίηση,η δεύτερη που σκέφτηκα είναι λίγο πιο μακροσκελής και χρησιμοποιεί περισσότερο funcional programming από ότι η δοθείσα αρχική κλάση).&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59007</link><pubDate>Mon, 07 Jun 2010 08:33:57 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59007</guid><dc:creator>Markos</dc:creator><description>&lt;p&gt;@darklynx: Δικό μου σφάλμα. Έχεις απόλυτο δίκιο. Υπό διαφορετικές συνθήκες ενδέχεται η μέθοδος που καλεί ο delegate να επιστρέψει διαφορετική τιμή για το ίδιο όρισμα, οπότε και η Value πρέπει να παίρνει την τιμή της όταν της ζητηθεί. Αυτό, όμως, δεν είναι λίγο επικίνδυνο; Ακόμα και μια φαινομενικά αθώα αντιστροφή της σειράς εκτέλεσης του κώδικα μπορεί να δώσει απρόσμενα αποτελέσματα αν μεταβάλει, για παράδειγμα, τιμές global παραμέτρων οι οποίες, όμως, χρησιμοποιούνται στην εν λόγω συνάρτηση. Πιο ασφαλές δεν είναι να δημιουργείται το object τη στιγμή που χρειάζεται και να υπολογίζεται η τιμή του property; Αυτό το σχόλιο, βέβαια, είναι ανεξάρτητο από το puzzle.&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59009</link><pubDate>Mon, 07 Jun 2010 11:22:00 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59009</guid><dc:creator>darklynx</dc:creator><description>&lt;p&gt;@Markos: Εξαρτάται αν η μόνη δουλειά που κάνει η κλάση είναι να μας δίνει την τιμή της Value.Φαντάσου όμως η κλάση να έχει και επιπλέον λειτουργικότητα και ακόμα ο delegate που περνάμε στον contructor να παράγει σημαντικό φόρτο στο σύστημα,τότε έχουμε κάθε λόγο να αναβάλλουμε τον πρώτο υπολογισμό της value (να ακολουθήσουμε τρόπο τινά μια lazy προσέγγιση στο σχεδιασμό της κλάσης).&lt;/p&gt;
&lt;p&gt;Τελικά βρήκα καμιά 4αρια προσεγγίσεις επί του ζητούμενου και μάλλον το παράκανα :P.Ορίστε οι δυο πρώτες,που αν και αισχρές ως σύλληψη δουλεύουν κατά το αναμενόμενο:&lt;/p&gt;
&lt;p&gt;class Solution1&amp;lt;T&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private T value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private List&amp;lt;Func&amp;lt;T&amp;gt;&amp;gt; execList;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public T Value&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (Func&amp;lt;T&amp;gt; func in execList)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value = func();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;execList.Clear();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Solution1(Func&amp;lt;T&amp;gt; func)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;execList = new List&amp;lt;Func&amp;lt;T&amp;gt;&amp;gt;();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.execList.Add(func);&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; class Solution2&amp;lt;T&amp;gt;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private T value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private Func&amp;lt;T&amp;gt; func;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public T Value&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value = func();&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;func = () =&amp;gt; { return value; };&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public Solution2(Func&amp;lt;T&amp;gt; func)&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.func = func;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#59011</link><pubDate>Mon, 07 Jun 2010 19:14:27 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:59011</guid><dc:creator>Markos</dc:creator><description>&lt;p&gt;Και τι κακό έχουν οι μέθοδοι; Φτιάχνεις το object όποτε θες και τις καλείς όποτε θες. Κατά τη γνώμη μου, έτσι όπως είναι γραμμένος ο αρχικός κώδικας, ακόμα και ένα απλό refactoring μπορεί να δημιουργήσει απρόβλεπτες καταστάσεις. Θα είναι δύσκολο να διαγνώσεις το πρόβλημα όταν έχεις μια property που η τιμή της γίνεται finilized ύστερα από την πρώτη κλήση.&lt;/p&gt;
&lt;p&gt;Η δεύτερη λύση πάντως είναι πιο όμορφη. Περιμένουμε να δούμε τι έστειλε ο Νίκος.&lt;/p&gt;
</description></item><item><title>re: Α programming puzzle</title><link>https://www.dotnetzone.gr:443/cs/blogs/palladin/archive/2010/06/06/programming-puzzle.aspx#71491</link><pubDate>Mon, 29 Oct 2012 16:02:38 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:71491</guid><dc:creator>nxavar</dc:creator><description>&lt;p&gt;Λύση βασιζόμενη σε Finite State Machine (καθώς δεν γνωρίζω F# ο κώδικας μπορεί να μην είναι συντακτικά ορθός).&lt;/p&gt;
&lt;p&gt;Ενεργή κατάσταση: func&lt;/p&gt;
&lt;p&gt;Δυνατές καταστάσεις: func_user, func_default&lt;/p&gt;
&lt;p&gt;public class Thunk &amp;lt;T&amp;gt;&lt;/p&gt;
&lt;p&gt;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private T value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private Func &amp;lt;T&amp;gt; func;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private Func &amp;lt;T&amp;gt; func_user;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private Func &amp;lt;T&amp;gt; func_default;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private Func &amp;lt;T&amp;gt; func_user_core;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;func &amp;nbsp;= func_user ( );&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private Func &amp;lt;T&amp;gt; func_user ( )&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;func &amp;nbsp;= func_default ( );&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;value &amp;nbsp;= func_user_core ( );&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return value;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;private&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public T value&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return func ( );&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; }&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;public Thunk ( Func &amp;lt;T&amp;gt; func )&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;{&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;func_user_core = func;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;this.func &amp;nbsp;= func_user;&lt;/p&gt;
&lt;p&gt; &amp;nbsp; &amp;nbsp;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;</description></item></channel></rss>