• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EST 15:01
CET 21:01
KST 05:01
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
TL.net Map Contest #21: Winners1Intel X Team Liquid Seoul event: Showmatches and Meet the Pros10[ASL20] Finals Preview: Arrival13TL.net Map Contest #21: Voting12[ASL20] Ro4 Preview: Descent11
Community News
Starcraft, SC2, HoTS, WC3, returning to Blizzcon!20$5,000+ WardiTV 2025 Championship5[BSL21] RO32 Group Stage3Weekly Cups (Oct 26-Nov 2): Liquid, Clem, Solar win; LAN in Philly2Weekly Cups (Oct 20-26): MaxPax, Clem, Creator win9
StarCraft 2
General
TL.net Map Contest #21: Winners Starcraft, SC2, HoTS, WC3, returning to Blizzcon! RotterdaM "Serral is the GOAT, and it's not close" Weekly Cups (Oct 20-26): MaxPax, Clem, Creator win 5.0.15 Patch Balance Hotfix (2025-10-8)
Tourneys
$5,000+ WardiTV 2025 Championship Constellation Cup - Main Event - Stellar Fest Merivale 8 Open - LAN - Stellar Fest Sea Duckling Open (Global, Bronze-Diamond) $3,500 WardiTV Korean Royale S4
Strategy
Custom Maps
Map Editor closed ?
External Content
Mutation # 498 Wheel of Misfortune|Cradle of Death Mutation # 497 Battle Haredened Mutation # 496 Endless Infection Mutation # 495 Rest In Peace
Brood War
General
BGH Auto Balance -> http://bghmmr.eu/ SnOw's ASL S20 Finals Review [BSL21] RO32 Group Stage Practice Partners (Official) [ASL20] Ask the mapmakers — Drop your questions
Tourneys
[Megathread] Daily Proleagues [BSL21] RO32 Group B - Sunday 21:00 CET [BSL21] RO32 Group A - Saturday 21:00 CET BSL21 Open Qualifiers Week & CONFIRM PARTICIPATION
Strategy
Current Meta How to stay on top of macro? PvZ map balance Soma's 9 hatch build from ASL Game 2
Other Games
General Games
Stormgate/Frost Giant Megathread Nintendo Switch Thread Dawn of War IV ZeroSpace Megathread General RTS Discussion Thread
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Deck construction bug Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread SPIRED by.ASL Mafia {211640}
Community
General
Russo-Ukrainian War Thread US Politics Mega-thread Things Aren’t Peaceful in Palestine YouTube Thread Dating: How's your luck?
Fan Clubs
White-Ra Fan Club The herO Fan Club!
Media & Entertainment
Movie Discussion! [Manga] One Piece Anime Discussion Thread Korean Music Discussion Series you have seen recently...
Sports
2024 - 2026 Football Thread NBA General Discussion MLB/Baseball 2023 TeamLiquid Health and Fitness Initiative For 2023 Formula 1 Discussion
World Cup 2022
Tech Support
SC2 Client Relocalization [Change SC2 Language] Linksys AE2500 USB WIFI keeps disconnecting Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List Recent Gifted Posts
Blogs
Saturation point
Uldridge
DnB/metal remix FFO Mick Go…
ImbaTosS
Why we need SC3
Hildegard
Career Paths and Skills for …
TrAiDoS
Reality "theory" prov…
perfectspheres
Our Last Hope in th…
KrillinFromwales
Customize Sidebar...

Website Feedback

Closed Threads



Active: 1327 users

The Big Programming Thread - Page 126

Forum Index > General Forum
Post a Reply
Prev 1 124 125 126 127 128 1032 Next
Thread Rules
1. This is not a "do my homework for me" thread. If you have specific questions, ask, but don't post an assignment or homework problem and expect an exact solution.
2. No recruiting for your cockamamie projects (you won't replace facebook with 3 dudes you found on the internet and $20)
3. If you can't articulate why a language is bad, don't start slinging shit about it. Just remember that nothing is worse than making CSS IE6 compatible.
4. Use [code] tags to format code blocks.
mgj
Profile Blog Joined March 2010
191 Posts
March 15 2012 11:47 GMT
#2501
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
March 15 2012 11:47 GMT
#2502
On March 15 2012 20:34 MisterD wrote:
Show nested quote +
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.
MisterD
Profile Blog Joined June 2010
Germany1338 Posts
March 15 2012 11:48 GMT
#2503
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


The thing is, if you do a little bit more advanced design where you hide your implementations behind interfaces (cf. eclipse api for instance), you can not use anything but getters because you can't declare fields in interfaces. Also, when using field access directly, you can not compose one data object from two others because you can't defer field accesses. Using getters and setters is actually an extremly good practice if you ask me. What you should definitely try to avoid is writing the getters and setters manually, as it's just a big bunch of boilerplate code that slows down your productiveness and requires you to change 5 names instead of 1 when renaming a property. But that's what source generators like projectlomboks @Getter and @Setter annotations are made for. Using them makes life so much easier.

And extends .. you should avoid extends unless it actually extends. It's easy to write a subclass of something just because "oh well my new class needs the same four fields as my old class, so i'll just make it a subclass even though it actually isn't". That's what you need to avoid. But avoiding extends generally is a really bad idea, because it requires you to write tons of delegation boilerplate code (assuming you want to stick to "do not repeat yourself" and copy/paste every code piece 10 times, which obviously is bad) if you happen to want to reuse something. and without using extends, it simply becomes impossible to use things like the template method pattern and other patterns where you super-class is required to be an actual class and not just an interface. This stuff is often enough a lot more useful and helpful than making your classes slightly easier to understand by not having few parent classes in it's hierarchy.
Gold isn't everything in life... you need wood, too!
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
Last Edited: 2012-03-15 11:52:12
March 15 2012 11:51 GMT
#2504
On March 15 2012 20:47 mgj wrote:
Show nested quote +
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?
lolmlg
Profile Joined November 2011
619 Posts
March 15 2012 11:51 GMT
#2505
On March 15 2012 13:11 Gogleion wrote:
Show nested quote +
On March 15 2012 12:53 ScruffyJanitor wrote:
This may or may not have already been asked but Im at work and need to make this quick before Im found out!! Do you have to be really amazing at maths? Math was never my strong point but Ive been interested in programming.

Programming isn't heavy on math computation, but it uses a lot of problem solving skills that are very important to math.


On March 15 2012 13:06 heroyi wrote:
Show nested quote +
On March 15 2012 12:53 ScruffyJanitor wrote:
This may or may not have already been asked but Im at work and need to make this quick before Im found out!! Do you have to be really amazing at maths? Math was never my strong point but Ive been interested in programming.

no not really just simple arithmetic and maybe some statistics. You just need to be logical and have some form of critical thinking (innovative helps too).


On March 15 2012 13:46 CecilSunkure wrote:
Show nested quote +
On March 15 2012 12:53 ScruffyJanitor wrote:
This may or may not have already been asked but Im at work and need to make this quick before Im found out!! Do you have to be really amazing at maths? Math was never my strong point but Ive been interested in programming.

Nah, but game programming certainly requires a whole lot of math.


On March 15 2012 19:42 Tobberoth wrote:
Show nested quote +
On March 15 2012 18:55 Herper wrote:
On March 15 2012 12:53 ScruffyJanitor wrote:
This may or may not have already been asked but Im at work and need to make this quick before Im found out!! Do you have to be really amazing at maths? Math was never my strong point but Ive been interested in programming.


Most you would need on enterprise level would be High School maths.
Game programming and physics simulation would require more advance level of maths tho

This. I'm terrible at math and I work fulltime as a programmer. When making games etc, you need to be able to work with vectors etc and math helps out a ton, but for making standard applications used by companies, apps for mobile phones etc, you basically need zero math... Most libraries already have all the algoritms etc you need built in, you don't need to worry about that stuff.


Here's a list of some titles of books I needed for university:

Calculus (there were two calculus courses)
Linear Algebra (there were two linear algebra courses)
Discrete Mathematics and its Applications
Abstract Algebra
Concepts in Probability and Stochastic Modeling
Introduction to Algorithms
Financial Accounting
Managerial Accounting

Those were all required courses and it is not an exhaustive list of all the courses that taught me math. Becoming a "programmer" is easy because you don't really need to understand anything except a language. If you want to pursue a degree and then a career in software engineering then you will need to learn a lot of math before you actually get a job. Depending on what job you get you might be able to forget all of that math, but the idea that you'll never "need" it is a little absurd because it's like saying "I'll just take all the easy jobs and never work in real-time systems". Your interests might lie exclusively in designing user interfaces or something, and that's fine, but without the mathematical foundation you won't have a choice.

That being said, I've never liked math either and I've done very little of it in my career so far.
MisterD
Profile Blog Joined June 2010
Germany1338 Posts
March 15 2012 11:54 GMT
#2506
On March 15 2012 20:47 fonger wrote:
Show nested quote +
On March 15 2012 20:34 MisterD wrote:
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.


the "increases in space" thing is actually a good idea. I don't know if it does really increase to the size of the biggest document in a collection, though. The thought behind it is, that if you have like a post and it's comments stored in one document, these documents grow by a small amount every time a new comment is added. If you write a bunch of documents directly behind each other in a file and one of them grows, you'll have to take it out and write it at the end of your file because otherwise you'd have to move all the data behind it. This makes your file have huge holes and the inserted documents will be completely out of order and what not. That's why you regularly have to run OPTIMIZE TABLE on your sql databases when there's a bunch of varchars in it that get updated every now and again, because the data entries just get mixed out of order.

So mongodb, where every document is basically just a big varchar, so the effect becomes really bad, analyzes your document behavior and will notice "oh, documents here usually get bigger after a while". Then it just allocates more space than the objects actual size, so that you can add a few comments before it become to big for the slot where it was created in, which in the end should save your machine a lot of work. But as stated, i can't tell you how big it makes them or whatever, i don't know the concrete implementation. Just the basic idea.
Gold isn't everything in life... you need wood, too!
lolmlg
Profile Joined November 2011
619 Posts
March 15 2012 11:59 GMT
#2507
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.

If you plan to avoid get and set methods then you'll be avoiding a standard so far-reaching that it is done automatically by many IDEs. People avoid it when the length of their class makes them upset. I can't think of another good reason.

As for extends there are some languages in which inheritance of that kind no longer exists, but that does not mean it should be avoided.

On March 15 2012 20:51 fonger wrote:
Show nested quote +
On March 15 2012 20:47 mgj wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?

By doing that you're violating any number of abstraction principles and will probably wind up with UI code dependent on implementation.
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
March 15 2012 12:00 GMT
#2508
On March 15 2012 20:54 MisterD wrote:
Show nested quote +
On March 15 2012 20:47 fonger wrote:
On March 15 2012 20:34 MisterD wrote:
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.


the "increases in space" thing is actually a good idea. I don't know if it does really increase to the size of the biggest document in a collection, though. The thought behind it is, that if you have like a post and it's comments stored in one document, these documents grow by a small amount every time a new comment is added. If you write a bunch of documents directly behind each other in a file and one of them grows, you'll have to take it out and write it at the end of your file because otherwise you'd have to move all the data behind it. This makes your file have huge holes and the inserted documents will be completely out of order and what not. That's why you regularly have to run OPTIMIZE TABLE on your sql databases when there's a bunch of varchars in it that get updated every now and again, because the data entries just get mixed out of order.

So mongodb, where every document is basically just a big varchar, so the effect becomes really bad, analyzes your document behavior and will notice "oh, documents here usually get bigger after a while". Then it just allocates more space than the objects actual size, so that you can add a few comments before it become to big for the slot where it was created in, which in the end should save your machine a lot of work. But as stated, i can't tell you how big it makes them or whatever, i don't know the concrete implementation. Just the basic idea.

I agree on the importance of expanding to meet the projected needs of the next object, but it's not transparent enough. If I have a million 20-byte records and one 1000-byte record in the same collection then (depending on the inner workings) this could create a serious problem.

SQL databases are much more easily controlled as you can't arbitrarily add extra fields to a given object and in most cases each field has a pre-defined limit.

That said Mongo is very cool; I just think it's easy to shoot yourself in the foot with xD
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
Last Edited: 2012-03-15 12:08:44
March 15 2012 12:07 GMT
#2509
On March 15 2012 20:59 lolmlg wrote:
Show nested quote +
On March 15 2012 20:51 fonger wrote:
On March 15 2012 20:47 mgj wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?

By doing that you're violating any number of abstraction principles and will probably wind up with UI code dependent on implementation.

Yeah mate but you're missing my point. I'm not suggesting that anything should be a POD public object; I'm pointing out that adding private variables and dumb set/get routines to any given class does not make it correct and "object-oriented." If you end up with one of those, you're doing it wrong.

A vector is a prime example. A decreasing number of purists insist on getX() and getY() where .x and .y are obviously far superior as there are NO invariants (exception being a normalised vector class which is very iffy in any case as vector operations are generally in performance-intensive blocks).

Simply put, there is no advantage to .getA()/.setA() over .a unless "a" has some state that should be monitored and controlled.

EDIT: except in case of possible extensibility in which case (my opinion) you should be using an interface anyway and be prepared for all the relevant performance costs.
Highways
Profile Joined July 2005
Australia6105 Posts
Last Edited: 2012-03-15 12:12:01
March 15 2012 12:11 GMT
#2510
What are people's thoughts on building HTML server side vs building HTML using javascript?

option 1) Return an JSON object containing data from your server and then use javascript to build up the HTML tags.

option 2) Build up the view on the server and return HTML back to the client.

This is mainly for ajax requests. (Using ASP.net MVC, not that it would matter).
#1 Terran hater
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
Last Edited: 2012-03-15 12:13:49
March 15 2012 12:13 GMT
#2511
Increased client-side performance, increased bandwidth used, decreased maintainability of any AJAX-type code for the server-side-generated-HTML approach. Vice-versa for the other one

EDIT: look up AngularJS!
MisterD
Profile Blog Joined June 2010
Germany1338 Posts
March 15 2012 12:17 GMT
#2512
On March 15 2012 21:11 Highways wrote:
What are people's thoughts on building HTML server side vs building HTML using javascript?

option 1) Return an JSON object containing data from your server and then use javascript to build up the HTML tags.

option 2) Build up the view on the server and return HTML back to the client.

This is mainly for ajax requests. (Using ASP.net MVC, not that it would matter).


you could argue that your main site should be generated server side to be compatible with users who have javascript disabled. onclick-AJAX updates or things like that are probably better generated client side, as these can only be executed if javascript is enabled anyways, and you can lessen performance requirements of your server and traffic requirements of server and client, while at the same time keeping the server output easier machine-readable should you decide to use it for something else at some point in the future.

(disclaimer: haven't done web programming in ages, just some guesswork from the top of my head. Might be wrong since not backed by any specific experiences on the matter, just feels sound to me.)
Gold isn't everything in life... you need wood, too!
Manit0u
Profile Blog Joined August 2004
Poland17420 Posts
Last Edited: 2012-03-15 12:35:58
March 15 2012 12:22 GMT
#2513
On March 15 2012 20:59 lolmlg wrote:
Show nested quote +
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.

If you plan to avoid get and set methods then you'll be avoiding a standard so far-reaching that it is done automatically by many IDEs. People avoid it when the length of their class makes them upset. I can't think of another good reason.

As for extends there are some languages in which inheritance of that kind no longer exists, but that does not mean it should be avoided.

Show nested quote +
On March 15 2012 20:51 fonger wrote:
On March 15 2012 20:47 mgj wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?

By doing that you're violating any number of abstraction principles and will probably wind up with UI code dependent on implementation.


Why getters, setters and extends are evil.

http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html

According to this even Java creator is upset with extends and if he were to re-write Java he'd get rid of classes entirely.
Time is precious. Waste it wisely.
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
Last Edited: 2012-03-15 12:48:57
March 15 2012 12:34 GMT
#2514
On March 15 2012 20:47 fonger wrote:
Show nested quote +
On March 15 2012 20:34 MisterD wrote:
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.


MongoDB is just a document oriented database, its not really made for anything. Given the way we use database these days it is much more efficient to do it this way. However a great side effect is that we are no longer stuck into schema's.

NodeJS requires the use of concurrency driven design, I've tried making real apps with it and its an architecture that is only really suitable for a very specific type (web/servers). Be prepared to write things at less than half the rate you are used to. If you are writing stuff imperatively then you are not doing it right and not only will your app not work properly with more than a few users, you will not reap the benefits that NodeJS provides.

IMO its going to be a major setback to its ability to grow as most people who build websites use languages that allow you to create things in the shortest time possible. We don't care about performance as much because its so easy and cheap to add extra hardware to a webserver. So why the sudden backflip with NodeJS?

I probably would be pretty content with using Node for game servers though.

On March 15 2012 21:22 Manit0u wrote:
Show nested quote +
On March 15 2012 20:59 lolmlg wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.

If you plan to avoid get and set methods then you'll be avoiding a standard so far-reaching that it is done automatically by many IDEs. People avoid it when the length of their class makes them upset. I can't think of another good reason.

As for extends there are some languages in which inheritance of that kind no longer exists, but that does not mean it should be avoided.

On March 15 2012 20:51 fonger wrote:
On March 15 2012 20:47 mgj wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?

By doing that you're violating any number of abstraction principles and will probably wind up with UI code dependent on implementation.


Why getters, setters and extends are evil.

http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html


Or you could just combine all of these articles and put it under "Why Java is evil".

I've been seriously rofling at all these silly design patterns that java developers have created to get around the limitations of Java. "interfaces over implementation", "why extends is evil", etc, etc. Everyone trying to follow Dijkstra's style of 'goto statement considered harmful' yet failing because instead of coming up with a solution (Pascal) they just side-step the real issue.

I mean yes, I do implement Java in this way (no extends, lots of interfaces for flexibility), but not because its good, its because Java is bad. Trust me, I bought into this shit when I was in my teens, how naive I was.

Hence I pretty much wouldn't touch Java with a 10 foot pole. The only time I do is with JRuby, except its just Ruby translated to Java bytecode so I can use Java libraries.

The whole getter and setter issue can be much better explained with Responsibility Driven Design. Getters and setters aren't evil, don't be ridiculous, its just that writing getters and setter methods is a nonsensical abstraction and causes code bloat. Nothing does my head in more than seeing a class with attributes and then get() set() methods for everything, causing the class to be about 100x bigger than it needs to be. However there are some times where you will need to write a getter and setter.

Responsibility Driven Design teaches you how to name classes (or classifications) and methods, what methods mean, and how to properly abstract real business models into object oriented code, when to use extends, etc. It takes a long time to learn, but after a while it should click and a lot of the mysteries of OOP will start to make complete sense. Until then you are simply throwing darts with a blindfold on and listening to morons telling you why things are evil.
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
MisterD
Profile Blog Joined June 2010
Germany1338 Posts
March 15 2012 12:47 GMT
#2515
On March 15 2012 21:22 Manit0u wrote:
Show nested quote +
On March 15 2012 20:59 lolmlg wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.

If you plan to avoid get and set methods then you'll be avoiding a standard so far-reaching that it is done automatically by many IDEs. People avoid it when the length of their class makes them upset. I can't think of another good reason.

As for extends there are some languages in which inheritance of that kind no longer exists, but that does not mean it should be avoided.

On March 15 2012 20:51 fonger wrote:
On March 15 2012 20:47 mgj wrote:
On March 15 2012 20:35 Manit0u wrote:
From what I read about design in Java, you should avoid getters and setters at all costs. Just like you should avoid extends.


Why? Java doesn't have properties, so what is the alternative? Never allow state? Java is not a functional language...

Avoiding extends.... Again, why? "implements" is not equivalent. Inheritance is very useful.

The alternative is public variables, which would save time if all you're doing is returning static values that you've already explicitly set through the setter. Ultimately if you have a class that consists entirely of data, straight getters and straight setters then you should re-write it as a completely public "struct equivalent" just so you can see that it was a poor choice to make it in the first place.

Basically, if your class has no invariants, what's the point of having it as a class in the first place?

By doing that you're violating any number of abstraction principles and will probably wind up with UI code dependent on implementation.


Why getters, setters and extends are evil.

http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html
http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html

According to this even Java creator is upset with extends and if he were to re-write Java he'd get rid of classes entirely.


i read over the extends article. The guy is partly right, all the examples he lists are absolutely stupid ways of using extends. But that doesn't make extends "evil", that just makes people using it this way evil. Of course you shouldn't write your own stack class as a subclass of arraylist, because you offer a ton of methods that you don't want your clients to have access to. And of course you shouldn't write "i need a linked list" if all you need is an iterable. But that doesn't make extends bad.

For instance: In our software, we have an abstract superclass of all UI-Accessible actions, that basically employs the template pattern and makes sure that no exceptions, runtime or otherwise, slip out into the UI event thread unnoticed. Basically it just does run(){try{runUnsafe();}catch(Exception e) {log(e);}. Using something like this without extends is simply impossible, because you'd then have to put runUnsafe() not as an abstract method but as a delegated interface method. When doing this, it increases the amount of boilerplate code that you have to write in the class itself and everywhere you use it (new ExceptionSafeAction(new ConcreteDelegateAction())) tenfold, that's just not a responsible thing to do.

So the right thing to do is not to conclude "extends is evil", but only to use extends when a) it's actually a valid relationship between classes (e.g. a stack is not an arraylist, but a "delete this object action" is an exception-safe action), and b) only use extends on classes, that are supposed to be extended. Again, cf. eclipse API: Every class in there has @NoExtend annotations if you are not supposed to extend it.

Sure, it would be nice if everyone would just had the experience to know where to extend and where not to extend, but that's not realistic. So, you have to give them guidelines. For instance, @NoExtend is a good way to say "you usually should not subclass this!". Saying "never use extends" works too, to keep people from using extends, but it's not a good guideline, because extends does have it's justifications and proper places to be used.
Gold isn't everything in life... you need wood, too!
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
March 15 2012 12:47 GMT
#2516
On March 15 2012 21:34 sluggaslamoo wrote:
Show nested quote +
On March 15 2012 20:47 fonger wrote:
On March 15 2012 20:34 MisterD wrote:
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.


MongoDB is just a document oriented database, its not really made for anything. Given the way we use database these days it is much more efficient to do it this way. However a great side effect is that we are no longer stuck into schema's.

NodeJS uses concurrency driven design, I've tried making real apps with it and its an architecture that is only really suitable for a very specific type (web/servers). Be prepared to write things at less than half the rate you are used to.

IMO its going to be a major setback to its ability to grow as most people who build websites use languages that allow you to create things in the shortest time possible. We don't care about performance as much because its so easy and cheap to add extra hardware to a webserver.

Web apps are concurrent by nature. Expressing this concurrency by interaction in a well-defined fashion is what Node excels at. There is to my knowledge no other server software that allows this as naturally as Node.

I disagree with your point about writing things at half the rate you're used to. If you have any experience with multi-threading in another language, Node will make perfect sense and in fact be a pleasant surprise.
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
March 15 2012 12:52 GMT
#2517
On March 15 2012 21:34 sluggaslamoo wrote:
If you are writing stuff imperatively then you are not doing it right and not only will your app not work properly with more than a few users, you will not reap the benefits that NodeJS provides.

Where the fuck did that come from?

IMO its going to be a major setback to its ability to grow as most people who build websites use languages that allow you to create things in the shortest time possible. We don't care about performance as much because its so easy and cheap to add extra hardware to a webserver. So why the sudden backflip with NodeJS?

What backflip? Node's built to be easily scalable horizontally, which very obviously captitalises on cheap hardware.

I probably would be pretty content with using Node for game servers though.

Performance, the same reason you'd use Node for any web app. Have you ever written a game server before?
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
March 15 2012 12:55 GMT
#2518
On March 15 2012 21:47 fonger wrote:
Show nested quote +
On March 15 2012 21:34 sluggaslamoo wrote:
On March 15 2012 20:47 fonger wrote:
On March 15 2012 20:34 MisterD wrote:
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.


MongoDB is just a document oriented database, its not really made for anything. Given the way we use database these days it is much more efficient to do it this way. However a great side effect is that we are no longer stuck into schema's.

NodeJS uses concurrency driven design, I've tried making real apps with it and its an architecture that is only really suitable for a very specific type (web/servers). Be prepared to write things at less than half the rate you are used to.

IMO its going to be a major setback to its ability to grow as most people who build websites use languages that allow you to create things in the shortest time possible. We don't care about performance as much because its so easy and cheap to add extra hardware to a webserver.

Web apps are concurrent by nature. Expressing this concurrency by interaction in a well-defined fashion is what Node excels at. There is to my knowledge no other server software that allows this as naturally as Node.

I disagree with your point about writing things at half the rate you're used to. If you have any experience with multi-threading in another language, Node will make perfect sense and in fact be a pleasant surprise.


I have experience with multi-threading in another language and its nothing like Node because you don't use concurrency driven design in other languages. Instead you have have to deal with things like locking and merging threads. In a purely concurrent app you shouldn't have to deal with those sorts of things with concurrency driven design. If you are, you are doing it wrong.

You simply can't write a web app using concurrency design patterns faster than you can write a normal web app. Its physically impossible. You will end up writing twice as many lines of code to achieve the same thing.

Web apps are only concurrent on the basis that there are multiple users connecting. Per user there is not much concurrency, and if there is, there will be libraries available for you to harness that specialised form of concurrency. Hence the point of NodeJS being cool because it allows you to write concurrently is hardly a selling point, performance can be gained at the click of a button for not much cost at all using elastic cloud instances.
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
fonger
Profile Blog Joined March 2006
United Kingdom1218 Posts
March 15 2012 13:04 GMT
#2519
On March 15 2012 21:55 sluggaslamoo wrote:
Show nested quote +
On March 15 2012 21:47 fonger wrote:
On March 15 2012 21:34 sluggaslamoo wrote:
On March 15 2012 20:47 fonger wrote:
On March 15 2012 20:34 MisterD wrote:
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.


MongoDB is just a document oriented database, its not really made for anything. Given the way we use database these days it is much more efficient to do it this way. However a great side effect is that we are no longer stuck into schema's.

NodeJS uses concurrency driven design, I've tried making real apps with it and its an architecture that is only really suitable for a very specific type (web/servers). Be prepared to write things at less than half the rate you are used to.

IMO its going to be a major setback to its ability to grow as most people who build websites use languages that allow you to create things in the shortest time possible. We don't care about performance as much because its so easy and cheap to add extra hardware to a webserver.

Web apps are concurrent by nature. Expressing this concurrency by interaction in a well-defined fashion is what Node excels at. There is to my knowledge no other server software that allows this as naturally as Node.

I disagree with your point about writing things at half the rate you're used to. If you have any experience with multi-threading in another language, Node will make perfect sense and in fact be a pleasant surprise.


I have experience with multi-threading in another language and its nothing like Node because you don't use concurrency driven design in other languages. Instead you have have to deal with things like locking and merging threads. In a purely concurrent app you shouldn't have to deal with those sorts of things with concurrency driven design. If you are, you are doing it wrong.

You simply can't write a web app using concurrency design patterns faster than you can write a normal web app. Its physically impossible. You will end up writing twice as many lines of code to achieve the same thing.

Web apps are only concurrent on the basis that there are multiple users connecting. Per user there is not much concurrency, and if there is, there will be libraries available for you to harness that specialised form of concurrency. Hence the point of NodeJS being cool because it allows you to write concurrently is hardly a selling point, performance can be gained at the click of a button for not much cost at all using elastic cloud instances.

Don't let me spoil it for you, but concurrency-driven design is the design of applications that are designed with concurrency at the core of their architecture. How that doesn't relate to multi-threading in other languages is beyond me.

You've offered no definition of a "normal web app" - are you talking about PHP? If you're comparing "hello world" in PHP to "hello world" in Node then I must congratulate you on a most valuable insight. If you're talking about anything else then you are wrong <3

Your generic term "web app" is concurrent on FAR more levels than merely multiple users connecting. Your comment on this suggests poor familiarity with Node, application design and multi-threading. Heard of timers?

NNNNEEEEEEERRRRRDD RAGE ENGAGE!!
sluggaslamoo
Profile Blog Joined November 2009
Australia4494 Posts
March 15 2012 14:23 GMT
#2520
On March 15 2012 22:04 fonger wrote:
Show nested quote +
On March 15 2012 21:55 sluggaslamoo wrote:
On March 15 2012 21:47 fonger wrote:
On March 15 2012 21:34 sluggaslamoo wrote:
On March 15 2012 20:47 fonger wrote:
On March 15 2012 20:34 MisterD wrote:
On March 15 2012 20:27 fonger wrote:
MONGOOOOOOOOOODB - thoughts?


funny thing, but clustering functionality is (was when i looked at it last about a year ago) horribly to control through client applications because of lacking support through the various language drivers (at least java). If you want to manage a mongodb instance as an in-application database you'll have to pipe it a ton, not fun. But well, that's not really what it was designed for. Haven't used it in it's primary use case as manually set up database for some clustered web application.

Oh and also, when using from java, the lack of a proper object<->document mapping (like hibernate for o/r mapping) is a bit ugly, next time i take a shot at it i'd definitely try to see if i can marshall my objects through gson and just write them in string form to the driver, rather than trying to build a marshaller of my own that uses the java drivers DBObject api directly :X such a stupid idea

Yeah mongo is definitely made for a server -> client scenario. Pretty sexy from what I've used of it - main concern is what logic it uses to allocate space for new objects as apparently it has some sort of intelligent allocation algorithm that increases the space reserved for each new object based on the space that the largest object of its collection has used. Scary o_o Love the concept though, and it's beautiful even as just a development-only standin for the final SQL database.

Coolest thing about mongo, node and angular is that your entire application is written in JS, which is a lot more consistent and solid in my opinion (in strict mode) than most of its competition.


MongoDB is just a document oriented database, its not really made for anything. Given the way we use database these days it is much more efficient to do it this way. However a great side effect is that we are no longer stuck into schema's.

NodeJS uses concurrency driven design, I've tried making real apps with it and its an architecture that is only really suitable for a very specific type (web/servers). Be prepared to write things at less than half the rate you are used to.

IMO its going to be a major setback to its ability to grow as most people who build websites use languages that allow you to create things in the shortest time possible. We don't care about performance as much because its so easy and cheap to add extra hardware to a webserver.

Web apps are concurrent by nature. Expressing this concurrency by interaction in a well-defined fashion is what Node excels at. There is to my knowledge no other server software that allows this as naturally as Node.

I disagree with your point about writing things at half the rate you're used to. If you have any experience with multi-threading in another language, Node will make perfect sense and in fact be a pleasant surprise.


I have experience with multi-threading in another language and its nothing like Node because you don't use concurrency driven design in other languages. Instead you have have to deal with things like locking and merging threads. In a purely concurrent app you shouldn't have to deal with those sorts of things with concurrency driven design. If you are, you are doing it wrong.

You simply can't write a web app using concurrency design patterns faster than you can write a normal web app. Its physically impossible. You will end up writing twice as many lines of code to achieve the same thing.

Web apps are only concurrent on the basis that there are multiple users connecting. Per user there is not much concurrency, and if there is, there will be libraries available for you to harness that specialised form of concurrency. Hence the point of NodeJS being cool because it allows you to write concurrently is hardly a selling point, performance can be gained at the click of a button for not much cost at all using elastic cloud instances.

Don't let me spoil it for you, but concurrency-driven design is the design of applications that are designed with concurrency at the core of their architecture. How that doesn't relate to multi-threading in other languages is beyond me.

You've offered no definition of a "normal web app" - are you talking about PHP? If you're comparing "hello world" in PHP to "hello world" in Node then I must congratulate you on a most valuable insight. If you're talking about anything else then you are wrong <3

Your generic term "web app" is concurrent on FAR more levels than merely multiple users connecting. Your comment on this suggests poor familiarity with Node, application design and multi-threading. Heard of timers?

NNNNEEEEEEERRRRRDD RAGE ENGAGE!!


Lol what a terrible post.

You keep angling me with questions like "have you ever written a gameserver?", "do you use PHP?", "heard of timers?". (seriously why are you using timers in Node? you are completely defeating the purpose).

How about, do you know anything?

If you really want to know

I use Node with CoffeeScript, Express, Jade, Async and Stylus.
And I do my TDD/BDD using Jasmine, Cucumber, Zombie. I used to use Expresso but these days code coverage doesn't bother me as much.

I probably used more than that but I dunno its been a while. I am really a Ruby developer at heart, something you should realise is that nearly every NPM module is a direct port or an adaptation of a Ruby gem. Hell even NPM is just like RubyGems. Which is why NodeJS attracted me in the first place, but I also like the fact that I can write apps quickly and have them be easy to maintain, something that NodeJS doesn't provide as well.

Let me ask you, do you use concurrent design patterns in NodeJS? Please don't use Wikipedia as you will just give me the wrong answers, the patterns are much more specific to Node itself. Although I should apologize that I was lazy and wasn't more specific by referring you to the subset known as asynchronous design patterns. The most important ones involve asynchronous control flow so you can write a completely concurrent program, and not have to worry about managing locks or merging threads.

This is because the design patterns you will use will have nearly every operation involve the use of callbacks with short unmanaged parallel runs, rather than longer managed runs. Something very suited to a language that runs on a functional imperative paradigm like Javascript. This makes it much cleaner overall than doing the same thing in lets say C#.

I will give you a trivial example. Lets say you want to run a simple for loop. Most people would just do that. But nooo, because we are running on a single threaded event loop this is bad, as soon as one person runs through, the second person has to wait for the first person to finish.

So instead of

for(var i= 0, l = entries.length; i < l; i++) {
doSomething(entries[i]);
}


We have to use a non-blocking loop (and we will use an un-ordered loop because most of the time order doesn't matter)


var leftToProcess = entries.length;

for(var i = 0, l = entries.length; i < l; i++){
(function(foo){
process.nextTick(function(){
doSomething(foo);
if(--leftToProcess === 0){
done();
}
}
);})(entries[i]);
}


Look mum no timers.

Note how this still takes a lot of time to write, and probably some time to think as well. Not to mention, imagine trying to maintain this. Development time is always more costly than CPU time, especially with the wide array of elastic cloud servers to choose from.

That's why NodeJS is making such a silly trade off with this maneuver. Perhaps it would be better if you could write in normal threaded mode, and then when your website suddenly became ebay, you could use the current Node engine and change the code then.

Oh I remember you mentioning

On March 15 2012 21:52 fonger wrote:
Show nested quote +
On March 15 2012 21:34 sluggaslamoo wrote:
If you are writing stuff imperatively then you are not doing it right and not only will your app not work properly with more than a few users, you will not reap the benefits that NodeJS provides.

Where the fuck did that come from?


The fact that this surprises you is a bit of a worry. Anyway you should check out the async library as that has a really useful bunch of async design patterns that you can use to help you write NodeJS properly.

https://github.com/caolan/async

Hopefully you know how to use git or npm at least.

The fact that it is unlikely that even a Node fan like yourself knows how to use Node properly, is one of the problems I was going to mention with Node. In fact its hard to even get any information on how to code in Node properly at all. Probably only a small number of Node users actually do things concurrently. Screening developers, let alone finding a good one, will be difficult and expensive to say the least.

Anyway lol I'm done with this thread (again), and might come back in a few weeks when I might (falsely) believe I will actually be able have an intellectual conversation.
Come play Android Netrunner - http://www.teamliquid.net/forum/viewmessage.php?topic_id=409008
Prev 1 124 125 126 127 128 1032 Next
Please log in or register to reply.
Live Events Refresh
LAN Event
18:00
Day 3: Ursa 2v2, FFA
SteadfastSC341
IndyStarCraft 173
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
mouzHeroMarine 461
SteadfastSC 341
IndyStarCraft 173
White-Ra 151
UpATreeSC 149
ProTech122
Railgan 44
MindelVK 34
ROOTCatZ 15
StarCraft: Brood War
Shuttle 454
BRAT_OK 69
scan(afreeca) 32
Shine 7
ivOry 5
Dota 2
qojqva3461
Dendi1022
Counter-Strike
pashabiceps824
Heroes of the Storm
Liquid`Hasu247
Other Games
FrodaN1350
fl0m758
Beastyqt582
Mlord517
ceh9442
KnowMe194
ArmadaUGS173
C9.Mang092
Mew2King77
Trikslyr55
shahzam7
OptimusSC21
Organizations
Counter-Strike
PGL125
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 20 non-featured ]
StarCraft 2
• Reevou 13
• Adnapsc2 9
• Dystopia_ 0
• Kozan
• sooper7s
• AfreecaTV YouTube
• Migwel
• LaughNgamezSOOP
• intothetv
• IndyKCrew
StarCraft: Brood War
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• C_a_k_e 2940
• Ler90
League of Legends
• Nemesis2245
• TFBlade918
Other Games
• imaqtpie1157
• WagamamaTV313
• Shiphtur223
Upcoming Events
OSC
1h 59m
Replay Cast
2h 59m
OSC
15h 59m
LAN Event
18h 59m
Korean StarCraft League
1d 6h
CranKy Ducklings
1d 13h
LAN Event
1d 18h
IPSL
1d 21h
dxtr13 vs OldBoy
Napoleon vs Doodle
BSL 21
1d 23h
Gosudark vs Kyrie
Gypsy vs Sterling
UltrA vs Radley
Dandy vs Ptak
Replay Cast
2 days
[ Show More ]
Sparkling Tuna Cup
2 days
WardiTV Korean Royale
2 days
LAN Event
2 days
IPSL
2 days
JDConan vs WIZARD
WolFix vs Cross
BSL 21
2 days
spx vs rasowy
HBO vs KameZerg
Cross vs Razz
dxtr13 vs ZZZero
Replay Cast
3 days
Wardi Open
3 days
WardiTV Korean Royale
4 days
Replay Cast
5 days
Kung Fu Cup
5 days
Classic vs Solar
herO vs Cure
Reynor vs GuMiho
ByuN vs ShoWTimE
Tenacious Turtle Tussle
6 days
The PondCast
6 days
RSL Revival
6 days
Solar vs Zoun
MaxPax vs Bunny
Kung Fu Cup
6 days
WardiTV Korean Royale
6 days
Liquipedia Results

Completed

BSL 21 Points
SC4ALL: StarCraft II
Eternal Conflict S1

Ongoing

C-Race Season 1
IPSL Winter 2025-26
KCM Race Survival 2025 Season 4
SOOP Univ League 2025
YSL S2
IEM Chengdu 2025
PGL Masters Bucharest 2025
Thunderpick World Champ.
CS Asia Championships 2025
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025

Upcoming

BSL Season 21
SLON Tour Season 2
BSL 21 Non-Korean Championship
Acropolis #4
HSC XXVIII
RSL Offline Finals
WardiTV 2025
RSL Revival: Season 3
Stellar Fest
META Madness #9
BLAST Bounty Winter 2026: Closed Qualifier
eXTREMESLAND 2025
ESL Impact League Season 8
SL Budapest Major 2025
BLAST Rivals Fall 2025
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.