Προς το περιεχόμενο

kagelos

Members
  • ΜΗΝΥΜΑΤΑ FORUM

    435
  • ΜΕΛΟΣ

  • ΤΕΛ. ΕΠΙΣΚΕΨΗ

Σχετικά με kagelos

  • Ημερομηνία γέννησης 19/02/1978

Πρόσφατες Επισκέψεις

Η εμφάνιση επισκεπτών είναι απενεργοποιημένη ή δεν έχετε πρόσβαση σε αυτή.

kagelos's Achievements

Proficient

Proficient (10/15)

  • Πρώτο Μήνυμα
  • Collaborator
  • Εκκίνηση Συζήτησης
  • 1 Εβδομάδα Μετά
  • Ένα Μήνα Μετά

Πρόσφατες Διακρίσεις

92

Φήμη

  1. Paypal & Revolut = η offshore του φτωχού Fore the time being τουλάχιστον
  2. Πάντως για Android, υπάρχει το AirDroid που έχει αρκετά συναφή λειτουργικότητα. EDIT υπάρχει και για iOS πλέον https://itunes.apple.com/app/id1194539178
  3. Να σας πω εγώ που ξέρω τα πάντα πόσα θα μπορούσαν να βγάλουν max. Το script που κάνει mining σε σελίδες είναι προφανώς από το coinhive ή κλώνος του. Αυτό το script παίρνει παράμετρο πόσο % CPU να χρησιμοποιεί. Το έχω δοκιμάσει σε διάφορες συσκευές και μπορώ να πω ότι ένας χοντρικός μέσος όρος με κινητά, low end laptops, καλά desktops κλπ, όταν το script τρέχει στο 100% είναι 20 hash / second. Αν όμως το βάλεις στο 100%, οι περισσότεροι browsers, ειδικά σε κινητά, το σκοτώνουν αμέσως. Οπότε έτρεχε σε λιγότερο από 100%. Ας δούμε όμως πόσα θα έβγαζαν στην θεωρητική περίπτωση του 100%. 800.000 επισκέπτες σε μια μέρα x 4 λεπτά ο καθένας μέσα είναι 192.000.000 δευτερόλεπτα Επί 20 hash, έχουμε 3.840.000.000 hash / μέρα, ή σε αναγωγή ανά δευτερόλεπτο 44Kh/sec Όποιος ξέρει από monero mining, γνωρίζει ότι με 44Kh/sec δεν μάμησε κανείς. Όποιος δεν ξέρει, δείτε το συνημμένο. Και αυτά χωρίς την προμήθεια του coinhive, η οποία είναι 30%.
  4. Είναι πιο εύκολη η διαχείριση των updates, τουλάχιστον. Σε ένα web app κάνεις deploy την καινούρια έκδοση στον server και όλοι έχουν αυτομάτως αναβαθμιστεί. Σε desktop apps πρέπει να κάνεις εγκατάσταση την εφαργμογή σε κάθε υπολογιστή κάθε φορά που έχεις καινούρια έκδοση. Επιπλέον το "desktop" app δεν θα παίζει σε Linux, macOS και κινητά, εκτός αν το ξαναγράψεις για όλες αυτές τις πλατφόρμες.
  5. Fixing a bug in production: https://media.giphy.com/media/XjlNyeZp5lDri/giphy.mp4
  6. Για Java δεν είμαι σίγουρος, αλλά π.χ. σε C# δεν μπορείς να κάνεις mock member που δεν είναι virtual. Αυτό σημαίνει ότι είτε μαρκάρεις όλα σου τα members virtual ή γράφεις interfaces. -------------- Για να είμαι πιο ακριβής (αν και δεν ξέρω τι σημασία έχει), μπορείς να κάνεις mock non virtual members σε C# με διάφορα mocking frameworks, αλλά από όσο έχω δει είναι αρκετά πιο πολύπλοκο και υπάρχουν πολλές περιπτώσεις που δεν σου βγαίνει.
  7. Για να μπορείς να κάνεις mock κλάσεις που δεν χρειάζεται ή δεν πρέπει να εξετάζεις μέσα στο εκάστοτε test. Δες τον εξής (χαζό) κώδικα και σκέψου πως θα τον έκανες testable: public class LogCleaner { private DbContext database; public LogCleaner(DbContext db) { this.database = db; } public void CleanOldLogEntries(int userId) { var logs = this.database.Users.Find(userId).Logs.OrderBy(x => x.Date).Take(100); foreach (var entry in user.Logs) { File.Remove(entry.Path); } } } // test var lc = new LogCleaner(???); // Αν κανω instance απο DbContext εδω, το test θα προσπαθήσει να βρει μια ΒΔ και να τρέξει query lc.CleanOldLogEntries(1); // Ο κωδικας θα προσπαθησει οντως να σβησει αρχεια απο τον δισκο
  8. Δύο (αλληλένδετοι) λόγοι που χρειάζονται interfaces σε κάθε κλάση είναι το Site: dependency injection και το Site: unit testing . Φυσικά υπάρχουν και πολλοί άλλοι λόγοι, όπως π.χ. ο πολυμορφισμός.
  9. Ανάλογα το σύστημα που υπάρχει στο backend. Το PostGIS και ο SQL Server για παραδειγμα το κανουν αυτο out of the box.
  10. Μπορείς να ψάχνεις σε μια ακτίνα γύρω από ένα σημείο με συντεταγμένες.
  11. https://www.reddit.com/r/funny/comments/5qvpmt/the_work_of_a_programmer/
  12. kagelos

    C# και task queue

    bool isWorkig = false; async Task Foo() { if (isWorking) { while(isWorking) await Task.Delay(100); return; } isWorking = true; DoThat(); DoThis(); isWorking = false; } Βάλε και κανένα lock για να την αλλάξεις και να τσεκάρεις την τιμή της όμως.
  • Δημιουργία νέου...