• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 11:54
CEST 17:54
KST 00:54
  • 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
ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12TL.net Map Contest #22 - Voting & Ladder Map Selection7Code S Season 2 (2026) - RO8 Preview8
Community News
MC vs IdrA, Boxer vs Nal_rA to be Legacy Matches @ BlizzCon255.0.16 Hotfix (June 30) - Balance + Bug Fixes28Weekly Cups (June 22-28): Zergs thrive in new patch2[TLMC] Summer 2026 Ladder Map Rotation05.0.16 patch for SC2 goes live (8 worker start)99
StarCraft 2
General
MC vs IdrA, Boxer vs Nal_rA to be Legacy Matches @ BlizzCon HomeStory Cup In Early July 5.0.16 Hotfix (June 30) - Balance + Bug Fixes 5.0.16 patch for SC2 goes live (8 worker start) Is the larve respawn broken?
Tourneys
Crank Gathers Season 4: BW vs SC2 Team League RSL Revival: Season 6 - Qualifiers and Main Event Douyu Cup 2026: $20,000 Legends Event (June 26-28) Maestros of The Game 2 announcement and schedule ! INu's Battles#17 <BO.9>
Strategy
[G] Having the right mentality to improve
Custom Maps
New Map Maker - Looking for Advice - Love or Hate Work In Progress Melee Maps [D]RTS in all its shapes and glory <3
External Content
The PondCast: SC2 News & Results Mutation # 532 Nuclear Family Mutation # 531 Experimental Artillery Mutation # 530 One For All
Brood War
General
ASL 22 Proposed Map Pool First season(s) of tastosis gomtv gsl vods? Starcraft vs Retro Category on Twitch Best thing happen to StarCraft since Remastered? BW General Discussion
Tourneys
[Megathread] Daily Proleagues [ASL21] Grand Finals The Casual Games of the Week Thread [BSL22] GosuLeague Casts - Tue & Thu 22:00 CEST
Strategy
Simple Questions, Simple Answers Creating a full chart of Zerg builds Relatively freeroll strategies Why doesn't anyone use restoration?
Other Games
General Games
Stormgate/Frost Giant Megathread Nintendo Switch Thread Dawn of War IV ZeroSpace at Steam NextFest - Last free demo Path of Exile
Dota 2
Looking for a Dota Mentor 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
TL Mafia
TL Mafia Power Rank TL Mafia Community Thread Vanilla Mini Mafia
Community
General
US Politics Mega-thread Russo-Ukrainian War Thread The Games Industry And ATVI Men's Fashion Thread Canadian Politics Mega-thread
Fan Clubs
The HerO Fan Club! The herO Fan Club!
Media & Entertainment
Movie Discussion! Series you have seen recently... [Req][Books] Good Fantasy/SciFi books [TV/BOOK] *SPOILERS* Game of Thrones Discussion
Sports
2024 - 2026 Football Thread TeamLiquid Health and Fitness Initiative For 2023 Formula 1 Discussion McBoner: A hockey love story Cricket [SPORT]
World Cup 2022
Tech Support
How to clean a TTe Thermaltake keyboard? Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
Listen To The Coaches!
TrAiDoS
An Exploration of th…
waywardstrategy
I'm an arrogant trash talke…
FlaShFTW
Gauntlet SC2: A Retrospectiv…
Ctone23
ramps on octagon
StaticNine
Funny Nicknames
LUCKY_NOOB
Evil Gacha Games and the…
ffswowsucks
Customize Sidebar...

Website Feedback

Closed Threads



Active: 9033 users

The Big Programming Thread - Page 958

Forum Index > General Forum
Post a Reply
Prev 1 956 957 958 959 960 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.
Excludos
Profile Blog Joined April 2010
Norway8264 Posts
May 02 2018 18:23 GMT
#19141
You can make anything look horrible if you really try. Static has its place in programming. I've had classes with thousands of lines being a static only class, as the alternative would be to repeat those thousands of lines throughout the entire project. Like everything else it's just a tool; If you use it badly it's going to make bad code. Doesn't really have anything to do with the language being oop or not.

Btw, remember that boss I had who told me not to test my code? Just started in a new job. I have a week or two until my first proper project, so I can spend them learning whatever I want. I told them I wanted to spend everything only on learning to test properly, and they were ecstatic about it. I love it here already :D If anyone has any good reads, guides, whatever on the subject I'm grateful.
Acrofales
Profile Joined August 2010
Spain18338 Posts
Last Edited: 2018-05-02 18:43:12
May 02 2018 18:42 GMT
#19142
On May 03 2018 03:00 Manit0u wrote:
Show nested quote +
On May 03 2018 02:01 spinesheath wrote:
Static only really becomes bad if you combine it with mutability. And I make a special exception for caches, as long as the static part is private and you never remove elements from the cache/modify elements in the cache.


Private static is fine for the most part. Public static is where things get hectic.

Here's a nice and brief explanation:
https://dzone.com/articles/why-static-bad-and-how-avoid

Edit:

Also, speaking of DI and encapsulation I think that Symfony project in PHP world is doing a great thing. They're basically forcing you to do nice and clean DI as they won't allow typehinting arguments to constructors with concrete classes, you can only specify interfaces and then inject whatever you want that implements this interface. Very neat.


You used php and great thing in the same sentence. And it wasn't "it'd be a great thing if php burned in everlasting hell"...
Manit0u
Profile Blog Joined August 2004
Poland17776 Posts
Last Edited: 2018-05-02 20:56:48
May 02 2018 20:54 GMT
#19143
On May 03 2018 03:23 Excludos wrote:
You can make anything look horrible if you really try. Static has its place in programming. I've had classes with thousands of lines being a static only class, as the alternative would be to repeat those thousands of lines throughout the entire project. Like everything else it's just a tool; If you use it badly it's going to make bad code. Doesn't really have anything to do with the language being oop or not.

Btw, remember that boss I had who told me not to test my code? Just started in a new job. I have a week or two until my first proper project, so I can spend them learning whatever I want. I told them I wanted to spend everything only on learning to test properly, and they were ecstatic about it. I love it here already :D If anyone has any good reads, guides, whatever on the subject I'm grateful.


https://www.obeythetestinggoat.com/pages/book.html#toc
http://www.growing-object-oriented-software.com/toc.html

One is for Python, the other one for Java, but they're great books in general to get you going. As a bonus, you'll be creating real, working software while going through them.

On May 03 2018 03:42 Acrofales wrote:
Show nested quote +
On May 03 2018 03:00 Manit0u wrote:
On May 03 2018 02:01 spinesheath wrote:
Static only really becomes bad if you combine it with mutability. And I make a special exception for caches, as long as the static part is private and you never remove elements from the cache/modify elements in the cache.


Private static is fine for the most part. Public static is where things get hectic.

Here's a nice and brief explanation:
https://dzone.com/articles/why-static-bad-and-how-avoid

Edit:

Also, speaking of DI and encapsulation I think that Symfony project in PHP world is doing a great thing. They're basically forcing you to do nice and clean DI as they won't allow typehinting arguments to constructors with concrete classes, you can only specify interfaces and then inject whatever you want that implements this interface. Very neat.


You used php and great thing in the same sentence. And it wasn't "it'd be a great thing if php burned in everlasting hell"...


I worked with PHP for 3 years. This language has a lot of shitty features but nowadays the bad rep it's accruing is because of several reasons:
1. It's easy to pick up so plenty of people who have no idea what they're doing are producing a lot of shit code.
2. Because of the above there's a ton of shitty websites that run it.
3. WordPress, which seems to be the goto framework for people who just want to put up their website quickly is everywhere and it's complete garbage (it can't be good if it has over 20 years of accumulated technical debt, compare that to Symfony which has 2 weeks of tech debt...)

But despite all that it's still going strong. There are some really good frameworks for it that let you do enterprise-grade software and promote good practices - just check out Symfony and its derivatives, like Silex and API Platform, there's a reason why Symfony components are becoming the de-facto standard library for PHP (practically every single project out there is using Symfony console and all the web frameworks are using their HTTP components like Request, Response, Session etc.).

PHP has gone a long way even during the 3 years I was working with it. It has improved vastly in many areas, from performance to code quality (they even added almost static typing to it if you wish to use it).

Seriously, I'd pick PHP over say JavaScript any day of the week (but I hate JavaScript and its ridiculous features so I'm biased).
Time is precious. Waste it wisely.
TheEmulator
Profile Blog Joined July 2010
28100 Posts
Last Edited: 2018-05-03 00:33:59
May 03 2018 00:32 GMT
#19144
On May 02 2018 01:33 nunez wrote:
Show nested quote +
On May 01 2018 16:57 bo1b wrote:
I use arch linux with xmonad (just to really get a better feel for haskell), Depending on what I need to do I have a dual boot windows on hand. I used to use pci pass through but I pretty much have stopped playing games for the most part, and use windows so rarely currently that I just don't care to stuff around with that much of a hassle. I have spent almost no time customizing my background as I simply don't give a shit, though I've spent a lot of time setting up spacemacs to do what I want to do. If for whatever reason I need to do some web editing, I have intellij ready to go at a moments notice, though again, I have an emacs set up that's significantly better in some regards.


this is me almost. except i use i3 instead of xmonad, and emacs instead of spacemacs. i switched from vim recently, very fun and painful. the way i use emacs tends to make me rely a bit less on the windows manager and the shell, which maybe is a bit worriesome, and un-unix like. maybe if used emacs server / client instead this would not be an issue. however i chose the easier path.

i try to homogenize hotkeys (f.ex. navigation) and theme across the programs i use in a programming context (windows-manager, text-editor, shell), but i don't bother customizing other software. i have a nice background photo that reminds me of relaxing in nature, the opposite of working with programming, but my tiling window manager makes sure i never get to see it.

i am planning to transition to guixsd from arch linux. but i did not find the time yet. i really do like arch, but i want to try something new. hopefully it will not be as short-lived as my excursion into gentoo.

I dual boot Windows 10 and Arch/i3. Working with i3 ( or any good WM tbh) feels so fucking good. I've tried bspwm and Awesome as well, but I think i3 has the simplest config to get started with. On the other hand I can never get into emacs. Still use vim and vscode.

I was really into "ricing" i3 for a bit, but it became too much of a chore that took away from important shit (if you don't know what that means check out r/unixporn)
Administrator
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 05 2018 20:05 GMT
#19145
Hey y'all. Thanks for the responses about DI and Dagger.

On May 01 2018 13:44 berated- wrote:
Show nested quote +
On April 30 2018 12:39 WarSame wrote:
I need a lot of help understanding Dagger 2. I've read a lot of guides and I don't understand DI in general.

You have an object you want to inject. You Provide it with @Provides inside of an @Module. You then use it somewhere else with @Inject. Is this correct so far?

If it is I'm failing to apply it to my cause and getting errors that aren't google-able.

In my case I am trying to inject an instance of a javax.crypto.KeyGenerator. I created a Module AppComponent with an @Provides KeyGenerator provideKeyGenerator(String walletName). I then want to @Inject this into another Class with certain parameters but I can't get that to work. I've tried a number of things, but keep running into problems injecting it, because it runs into problems injecting into a static field.

Does anyone have a good, basic guide for doing something like this? I feel like I'm running into a wall with this. I'll try to post some sample code tomorrow night to give this post an actual purpose.


I haven't played around with dagger a whole lot, but, I'm a pretty big spring fan boy, so maybe that makes me qualified to help?

Dependency injection is most often used to help implement the Inversion of Control pattern. The entire point is that one does not know where or how their dependencies are constructed, just that they need the service. The base example I always go back to is a print service in java. I don't care how the printer implementation is done, I just know that I need someone that can print, so I'm going to request such a service with my @Inject.

The reason I point this out, is when you say you just need a key generator with certain parameters, it feels like it doesn't line up with IoC in the way previously mentioned. IoC would work best if you just said, hey,I need a key generator, not with certain parameters. That's where in the Java world where we love our patterns, the factory pattern comes in. In your case you don't just need a keygenerator, you need one who knows how to make key generators. You could inject that in, and then use that method.

All of this is kind of eclipsed by the fact that you then mention statics. This isnt' to say that statics are bad, it's just that, they aren't often used with DI. One of the reasons that DI is so popular is that when you aren't specifying your implementation, but yet the interface that you need -- one can provide a completely different implementation under test that can skip hard integration and allow for easier unit testing with mocks or test doubles. Specifying a concrete implementation into a static field doesn't help that much for test-ability in most cases.

If you would like to get into more specifics I would be glad to ramble more.


My problem is that I need to test a function that uses a KeyGenerator in a subfunction. Automated testing means I can't authenticate. Therefore, I wanted to pass in a KeyGenerator that did not use user authentication when I was testing, and one that did require authentication when I was using the app. I thought DI was useful for what I wanted, but maybe I was barking up the wrong tree. My code is below, feedback is welcome. I have a ton of statics because I thought that made sense. My last job was C so I guess I was just used to it.

Git repo/branch

AddEthActivity, one place I use it. Look at authenticateMobileUser

EncryptionTest is one test that involves it

Encryption is where it actually happens

On May 02 2018 05:24 Blisse wrote:
Show nested quote +
On April 30 2018 12:39 WarSame wrote:
I need a lot of help understanding Dagger 2. I've read a lot of guides and I don't understand DI in general.

You have an object you want to inject. You Provide it with @Provides inside of an @Module. You then use it somewhere else with @Inject. Is this correct so far?

If it is I'm failing to apply it to my cause and getting errors that aren't google-able.

In my case I am trying to inject an instance of a javax.crypto.KeyGenerator. I created a Module AppComponent with an @Provides KeyGenerator provideKeyGenerator(String walletName). I then want to @Inject this into another Class with certain parameters but I can't get that to work. I've tried a number of things, but keep running into problems injecting it, because it runs into problems injecting into a static field.

Does anyone have a good, basic guide for doing something like this? I feel like I'm running into a wall with this. I'll try to post some sample code tomorrow night to give this post an actual purpose.


For your case, your Application needs to store an instance of the AppComponent object, and you'll do something like `Application.getInstance.inject(this)`.

I've never tried injecting into static fields, but I wouldn't be surprised if that doesn't work. You're basically subverting the whole point of using a dependency injection framework.

IMO this (https://www.techyourchance.com/dagger-tutorial/) is a simple Dagger tutorial that should get you running. Vasiliy has good ideas about Dagger. I would also check r/androiddev if you have any Android specific questions, more actives there.

Thanks, I'll look into it.

On May 02 2018 07:14 Manit0u wrote:
It depends on how you use them, but most of the time static properties (methods, variables, attributes, you name it) break encapsulation and introduce global state, which you usually want to avoid. Do you really, really need a method to be globally accessible?

Every time you want to use the static keyword in an OOP language you should ask yourself some questions first:
1. Do you really need a method that can be called without instantiating an object?
2. If your answer to #1 was "yes" then you must ask yourself if this breaks the single responsibility principle?
3. In any case, maybe this code could be moved to a different class altogether and not make it static?

The only reasons I've found to use static props was for some helper classes, preferably making them abstract so that they're never instantiated (man, sometimes I really wish you could use both final and abstract at the same time). Usually they're used for storing some kind of system setting stuff that has to be hardcoded.

Perhaps I'm dead wrong, but that's my take on it

I'll consider this but I don't think I know enough to correct my architecture to what you're saying.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2018-05-06 03:15:14
May 06 2018 03:14 GMT
#19146
I'm not totally sure what you're trying to do. If you're not writing UI tests you don't need to fake authentication in your Activity.

If you're just writing unit tests, your problem isn't DI here, you're just missing abstractions.

If you need to provide different behaviors in tests, you need to create abstractions that you have control over (your classes vs Android classes). You need to tell Android's KeyGenerator to give you normal values in the app, and XYZ values in tests. Since you can't do that, all you need to do is abstract away the usage of KeyGenerator.

In this case, instead of using KeyGenerator, you create an interface, then 2 implementations, 1 calls the Android KeyGenerator, 2 is a test implementation that responds with whatever values you want, so that you can test the other parts of how your encryption code behaves.



You should really invest in applying any kind of Android architectural patterns. They provide a framework for solving these kinds of problems (testing really). Especially if you also want to write UI tests.
There is no one like you in the universe.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 06 2018 20:19 GMT
#19147
The problem is that I need to access KeyGenerator a few function levels down, so I can't simply call 2 different interfaces. Once again, I face the problem that I need to get access to an object levels down the tree from something above it. That was where I thought DI came in.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Manit0u
Profile Blog Joined August 2004
Poland17776 Posts
May 06 2018 21:23 GMT
#19148
On May 07 2018 05:19 WarSame wrote:
The problem is that I need to access KeyGenerator a few function levels down, so I can't simply call 2 different interfaces. Once again, I face the problem that I need to get access to an object levels down the tree from something above it. That was where I thought DI came in.


What do you mean by "few functions down"?

To me it looks like a case of broken Law of Demeter...

Time is precious. Waste it wisely.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 06 2018 21:31 GMT
#19149
Yes, it is because the KeyGuard relies on some "authenticated" state being set. I don't know of any good way around that.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Manit0u
Profile Blog Joined August 2004
Poland17776 Posts
May 07 2018 00:43 GMT
#19150
On May 07 2018 06:31 WarSame wrote:
Yes, it is because the KeyGuard relies on some "authenticated" state being set. I don't know of any good way around that.


Is this a part of some Open Source? Is the API public?

It would help immensely if you could perhaps point us to this KeyGuard class documentation/definition.
Time is precious. Waste it wisely.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
Last Edited: 2018-05-07 00:56:48
May 07 2018 00:51 GMT
#19151
Sorry, I did way back.

KeyGuardManager

createDeviceConfirmCredential starts an Intent that prompts the user to authenticate using their normal phone login credentials.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Manit0u
Profile Blog Joined August 2004
Poland17776 Posts
May 07 2018 08:33 GMT
#19152
On May 07 2018 09:51 WarSame wrote:
Sorry, I did way back.

KeyGuardManager

createDeviceConfirmCredential starts an Intent that prompts the user to authenticate using their normal phone login credentials.


Well, yes, but you can completely ignore this Intent if you wish. You can either do the standard startActivityForResult(Intent, int) or wrap it around your own stuff and do with it as you please (so you can mock user passing authentication or failing authentication easily).

At least that's how I see it.
Time is precious. Waste it wisely.
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2018-05-07 09:35:58
May 07 2018 09:22 GMT
#19153
All you need to do is create more abstractions. You're not creating classes in a way that allows you to compose things properly for testing. Replace your static helper classes with concrete classes, break things apart into interfaces so that you have a real implementation and a test implementation. Do this wherever you believe you need to differentiate behaviors in real and on tests until you develop a better intuition on how to do that productively.

Using a standard Android architectural pattern gets you a long way towards writing testable code. Again, I would highly suggest doing that.
There is no one like you in the universe.
Hanh
Profile Joined June 2016
146 Posts
May 07 2018 14:13 GMT
#19154
On May 06 2018 05:05 WarSame wrote:
...
I'll consider this but I don't think I know enough to correct my architecture to what you're saying.


If you are not attached to Java/Android, you could try using React Native/Redux. Java/Android does not favor any app architecture nor does it have a dominant design pattern so you are pretty much left on your own. RN on the other hand is mainly either redux or mobx. You could quickly try them both and see for yourself the advantages of reactive programming or mvvm. Both have excellent testability because they separate business logic from UI.
Today you could fix your problem with DI and introducing interfaces, but it seems that you would be only patching rather than attacking the bigger issue.
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
May 07 2018 19:51 GMT
#19155
Java/Android does not favor any app architecture nor does it have a dominant design pattern


Android has favoured MVP for the last half decade, moving slowly towards MVVM in the last year.
There is no one like you in the universe.
Hanh
Profile Joined June 2016
146 Posts
May 08 2018 01:24 GMT
#19156
On May 08 2018 04:51 Blisse wrote:
Android has favoured MVP for the last half decade, ...


Any reference? AFAIK, Android does not have any particular facilities for MVP, unlike WPF has for MVVM and I haven't heard about an official recommendation about it from Google either though now they have some pages on MVVM .
Blisse
Profile Blog Joined July 2010
Canada3710 Posts
Last Edited: 2018-05-09 02:12:17
May 09 2018 01:48 GMT
#19157
The Android community at least has centered around MVP the last 2 years. Digging back I can only find that some blog said Square recommended MVP in 2014. Hard to dig past that.

At the very least it's been some sort of MVP, MVI or MVVM the last while.

One of the Android leads (forgot the name) said that she designed Android to be essentially architecture free, so it makes sense Android itself doesn't force any specific architecture, but recently all the docs are definitely leaning MVVM.


I think it'd be really invaluable learning the ins and outs of at least one kind of app architecture, whatever you choose.
There is no one like you in the universe.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 09 2018 21:14 GMT
#19158
Could you link some examples of MVP and MVVM? I have not spent much time in my life looking at architecture in practice. I had a shitty Software Architecture course in university.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Manit0u
Profile Blog Joined August 2004
Poland17776 Posts
May 09 2018 21:41 GMT
#19159
On May 10 2018 06:14 WarSame wrote:
Could you link some examples of MVP and MVVM? I have not spent much time in my life looking at architecture in practice. I had a shitty Software Architecture course in university.


https://android.jlelse.eu/android-mvp-for-beginners-25889c500443

MVP is a pattern derived from MVC for the web. It's been around for a long time and for a reason.

It is also a good idea to read some on Hexagonal Architecture while you're at it:
http://fideloper.com/hexagonal-architecture
https://herbertograca.com/2017/11/16/explicit-architecture-01-ddd-hexagonal-onion-clean-cqrs-how-i-put-it-all-together/
Time is precious. Waste it wisely.
WarSame
Profile Blog Joined February 2010
Canada1950 Posts
May 11 2018 03:14 GMT
#19160
Thank you for the MVP article. It has been extremely informative.
Can it be I stayed away too long? Did you miss these rhymes while I was gone?
Prev 1 956 957 958 959 960 1032 Next
Please log in or register to reply.
Live Events Refresh
CrankTV Team League
11:00
Crank Gathers S4: Qualifiers
LiquipediaDiscussion
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Serral 2707
MaxPax 298
RushiSC 17
trigger 1
StarCraft: Brood War
Britney 29333
Calm 4172
Sea 1385
Horang2 1278
ZerO 897
Soma 769
firebathero 714
Light 507
Larva 456
BeSt 437
[ Show more ]
Soulkey 302
ggaemo 274
Snow 242
Rush 204
Hyuk 175
hero 105
Leta 63
ToSsGirL 50
Sea.KH 49
Sharp 48
Shine 38
sorry 38
soO 33
Aegong 27
Movie 26
scan(afreeca) 22
Terrorterran 21
Hm[arnc] 20
Barracks 19
yabsab 16
IntoTheRainbow 15
Bale 14
Free 14
Rock 12
Sacsri 11
zelot 11
Dota 2
Gorgc7269
singsing4662
qojqva1502
XcaliburYe146
Counter-Strike
x6flipin518
byalli347
edward44
Super Smash Bros
Mew2King73
Other Games
gofns18768
FrodaN1015
B2W.Neo991
Lowko370
DeMusliM329
Hui .209
Sick181
KnowMe97
ArmadaUGS37
Trikslyr32
ZerO(Twitch)18
Organizations
Dota 2
PGL Dota 2 - Main Stream134
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 15 non-featured ]
StarCraft 2
• mYiSmile148
• intothetv
• AfreecaTV YouTube
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
Dota 2
• WagamamaTV366
League of Legends
• Nemesis3792
• TFBlade935
Other Games
• Shiphtur80
Upcoming Events
Bombastic Starleague
4h 6m
The PondCast
18h 6m
HomeStory Cup
19h 6m
Replay Cast
1d 8h
HomeStory Cup
1d 19h
Replay Cast
2 days
HomeStory Cup
2 days
OSC
2 days
Sparkling Tuna Cup
3 days
WardiTV Weekly
4 days
[ Show More ]
The PondCast
5 days
Replay Cast
6 days
CrankTV Team League
6 days
Liquipedia Results

Completed

YSL S3
Douyu Cup 2026
Murky Cup 2026

Ongoing

IPSL Spring 2026
Acropolis #4
CSL Season 21: Qualifier 2
SCTL 2026 Spring
XSE Pro League 2026
IEM Cologne Major 2026
Stake Ranked Episode 2
CS Asia Championships 2026
Asian Champions League 2026
IEM Atlanta 2026
PGL Astana 2026
BLAST Rivals Spring 2026
IEM Rio 2026

Upcoming

Escore Tournament S3: W1
CSL 2026 Summer (S21)
Escore Tournament S3: W2
ASL Season 22:Wild Card Qualifier
CSLAN 4
Blizzard Classic Cup 2026
Kung Fu Cup 2026 Grand Finals
RSL Revival: Season 6
CranK Gathers Season 4: BW vs SC2 Team League
HSC XXIX
Light Tournament 2026
Eternal Conflict S2 Finale
Heroes Pulsing #3
Eternal Conflict S2 E1
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
Stake Ranked Episode 3
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 © 2026 TLnet. All Rights Reserved.