• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 13:25
CEST 19:25
KST 02:25
  • 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
Serral wins HomeStory Cup 2914Serral wins Maestros of the Game 243ByuL, and the Limitations of Standard Play3Team Liquid Map Contest #22: Results and Winners7Code S Season 2 (2026): RO4 and Finals Preview12
Community News
Balance hotfix patch 5.0.16b (July 16)26Reynor: GSL Loss Wasn't About Preparation Format16[IPSL] Spring 2026 Grand Finals - This Weekend!5Weekly Cups (July 6 - 12): Protoss strike back12BSL Season 22 Full Overview & Conclusion8
StarCraft 2
General
Balance hotfix patch 5.0.16b (July 16) [D] Wireframe Casting Removed Clem: "I don't have that much hope in Blizzard" Reynor: GSL Loss Wasn't About Preparation Format Is the larve respawn broken?
Tourneys
Master Swan Open (Global Bronze-Master 2) WardiTV Summer Cup 2026 GSL CK #5 Race War RSL Revival: Season 6 - Qualifiers and Main Event HomeStory Cup 29
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 # 534 Burning Evacuation Mutation # 533 Die Together Mutation # 532 Nuclear Family
Brood War
General
BW General Discussion Recent recommended BW games Recommended FPV games (post-KeSPA) Etiquete rules in Asl? Pros Debate: Zerg Unfairly Nerfed? (ASL S22 map)
Tourneys
Escore Tournament - Season 3 Small VOD Thread 2.0 [IPSL] Spring 2026 Grand Finals - This Weekend! [Megathread] Daily Proleagues
Strategy
Fighting Spirit mining rates Simple Questions, Simple Answers Creating a full chart of Zerg builds Relatively freeroll strategies
Other Games
General Games
General RTS Discussion Thread Path of Exile Nintendo Switch Thread Beyond All Reason Stormgate/Frost Giant Megathread
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 NeO.D_StephenKing vs This Guy From 1 Million Dance TL Mafia Community Thread Vanilla Mini Mafia
Community
General
US Politics Mega-thread The Games Industry And ATVI Russo-Ukrainian War Thread UK Politics Mega-thread YouTube Thread
Fan Clubs
The IdrA Fan Club The HerO Fan Club!
Media & Entertainment
Movie Discussion! Anime Discussion Thread [Req][Books] Good Fantasy/SciFi books Series you have seen recently...
Sports
2024 - 2026 Football Thread MLB/Baseball 2023 McBoner: A hockey love story Tennis[sport] Formula 1 Discussion
World Cup 2022
Tech Support
Simple Questions Simple Answers FPS when play League Of Legend on laptop How to clean a TTe Thermaltake keyboard?
TL Community
Northern Ireland Global Starcraft The Automated Ban List
Blogs
Poker (part 2)
Nebuchad
The Experiences We Want and …
TrAiDoS
An Exploration of th…
waywardstrategy
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: 7740 users

The Big Programming Thread - Page 11

Forum Index > General Forum
Post a Reply
Prev 1 9 10 11 12 13 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.
catamorphist
Profile Joined May 2010
United States297 Posts
Last Edited: 2010-07-13 05:09:30
July 13 2010 04:54 GMT
#201
I'm not sure -- I just don't think that you can look at a class and treat it as a method list and nothing else. To start with, those methods all have names; surely you agree that the names are important? Suppose Array.BinarySearch always returned the right result, but it only did it in linear time; wouldn't you be surprised and irritated that it wasn't logarithmic?

How do you know whether a piece of data ought to be exposed as a property or a method call in C#? Usually, the convention is that if it could take a non-negligible amount of time to get the result, it ought to be a method call (barring some lazy initialization sort of hijinx.) So here is already an example where C# suggests different best practices based on the performance of your implementation.

Most C# programmers who are collaborating with other people are vaguely familiar with most of the framework classes that implement IList and ISet, so it's not a matter of looking at all the concrete classes; you've already seen them. I think that real efficiency is being able to quickly gauge a big piece of code based on the shared experience and conventions between you and the writer, maximizing the amount of information you're communicating with your choices of design, variable names, and types. I don't see any reason that performance characteristics shouldn't be part of that information.
http://us.battle.net/sc2/en/profile/281144/1/catamorphist/
Craton
Profile Blog Joined December 2009
United States17295 Posts
July 13 2010 05:57 GMT
#202
On July 13 2010 00:51 Adeny wrote:
See how confusing that is? Think I got it though, checking out LINQ and it's some really funky stuff.
var lowNums =
from n in numbers
where n < 5
select n;

SQL-syntax for C#...


LINQ is a pretty damn nifty feature. There's a nice blog article pertaining to the cartesian product you're essentially after, but I'll have to get you the link tomorrow at work. It's a bit more than what you need, but it was an interesting read. The jist of it, iirc, was how to go about performing the cartesian linq when you don't know how many sets you have.
twitch.tv/cratonz
Tyraz
Profile Blog Joined September 2008
New Zealand310 Posts
Last Edited: 2010-07-13 06:25:49
July 13 2010 06:12 GMT
#203
Edit: seeing what is there and what is actually there is probably the worst part of debugging, to be honest.
100% Pure.
Craton
Profile Blog Joined December 2009
United States17295 Posts
July 13 2010 06:17 GMT
#204
Presumably because he doesn't want to return false and instead keep looping.
twitch.tv/cratonz
cowsrule
Profile Joined February 2010
United States80 Posts
July 13 2010 09:23 GMT
#205
On July 13 2010 15:12 Tyraz wrote:
Edit: seeing what is there and what is actually there is probably the worst part of debugging, to be honest.


What do you mean? Are you debugging with optimizations on or not using a modern debugger?
lastkarrde
Profile Joined December 2009
New Zealand66 Posts
July 13 2010 09:59 GMT
#206
I'm looking to get into parsing binary information such as SC replays and maps. I've read through the source of some parsing projects and to me it seems as if they are looking for specific codes (memory codes?) in the file which map to an event/action in plain english. Could someone explain this to me?

I also don't know what words to search for when trying to find more information on this subject. I have tried binary file parsing to no avail. Any ideas or links to docs/tutorials?

Thanks in advance for any help.
TTD
uNiGNoRe
Profile Blog Joined June 2007
Germany1115 Posts
July 13 2010 10:42 GMT
#207
Just a small note: The link to w3schools in the OP is wrong. I guess it should be .com instead of .org.
RoTaNiMoD
Profile Blog Joined January 2004
United States558 Posts
Last Edited: 2010-07-13 11:31:48
July 13 2010 11:31 GMT
#208
Adeny:

You piqued my interest sufficiently in Project Euler that I finally went for it. I did project #23 and enjoyed both the process and the afterstudy. Looking at other's code for the same problem is a telling experience -- sometimes things look so similar it's absurd, and likewise, sometimes so different it's equally absurd. Throw in people with different language preferences and the variety can be astonishing. I had a reasonably fast method but no matter how clever you think you are there's always someone who optimized it in ways you never considered. Mine ran in maybe half a second after I finished optimizing.

Key points for speed: 1) improve your abundant-number check by iterating only to square root of n, and whenever you find a match, count it for both values of the divisor-pair. 2) Use a system other than foreach to loop through the array, since that will compare every value in the array to every other value twice. This could also improve your early-exit condition by testing for if( i + ii > counter ) instead of each one individually.



All: pretty awesome that this thread has come about. Coders from all types frequent here, seeming to almost come out of the woodwork at times. I've browsed TL for a long time and have always noted that there are some serious developers around. More and more people are getting into it though which is rather nice. When I manage to get my thoughts in order, I plan to start up some discussion regarding three areas: DLL injection and other stealth techniques, dynamic web scraping, and OCR/screenscraping. I'll be able to offer a degree of insight into such things and then hope to take full advantage of those who know more than I do, perhaps ultimately being able to glean some advice or get some questions answered.
gatts
Profile Joined September 2009
1 Post
Last Edited: 2010-07-13 11:54:11
July 13 2010 11:49 GMT
#209
What about some reading tips? i.e.

Design patterns:
GoF

or

Head first

Personally im quite fond of the head first series of books. (havent really read the GoF one, but from what ive heard its alot denser so probably better as a reference)

Also in general:
Pragmatic Programmer

and Code complete

(havent read code complete yet, but it seems to be on alot of recommended reading lists)

Sorry if linking to the amazon store for the books is inapropriate in some way.

edit: Probably a better source of book recomendations: http://stackoverflow.com/questions/1711/what-is-the-single-most-influential-book-every-programmer-should-read
RoTaNiMoD
Profile Blog Joined January 2004
United States558 Posts
Last Edited: 2010-07-13 12:11:08
July 13 2010 12:09 GMT
#210
On July 13 2010 18:59 lastkarrde wrote:
I'm looking to get into parsing binary information such as SC replays and maps. I've read through the source of some parsing projects and to me it seems as if they are looking for specific codes (memory codes?) in the file which map to an event/action in plain english. Could someone explain this to me?

I also don't know what words to search for when trying to find more information on this subject. I have tried binary file parsing to no avail. Any ideas or links to docs/tutorials?

Thanks in advance for any help.


lastkarrde:

Ahh, data file parsing. The beauty, as a developer, of making your own data file formats for your programs is that you can create them however you see fit. This same beauty can prove very, very ugly for those of us trying to interpret it without the documentation of what anything means. For example, let's look at a Move command in a Starcraft replay. The important parts of the Move command are the command title, MOVE, the unit(s) to move (probably represented by an ID number), and a destination (in x-y coordinates, perhaps normalized such that 0,0 is one corner and 65536, 65536 is the other). In English, then, this command could be represented by:

Move Marine (UnitID:62) to location 2640, 13280.

This however, is a lot of text. What if instead of writing Move, we just have a symbol that means move. Say, the characters MV. And instead of listing the extra stuff for the unit, we just list the ID (since there is only one Unit#62). And let's take out the words 'to location' as well. The computer doesn't need that, it's assumed from a move command. We are left with:

MV 62 2640 13280

Now, that's close to how data is actually stored. However, instead of using nice things like MV for move, or actual numbers, pretty much everything is converted to Hex. Actions are probably represented something like this

+ Show Spoiler +

00 - Stop
01 - Attack
02 - Psi storm
03 - Hallucinate
...
09 - Switch to Unseige mode
0A - Switch to Seige mode
0B - Lay spider mine
..
0F - Parasite
10 - Ensnare
11 - Disruption Web
...
9F - Gather
A0 - repair
A1 - lift off
A2 - archon meld
A3 - move
A4 - build interceptor
...
etc


Perhaps that's overkill, but it helps give you the idea. It might even be possible that there's so many commands (more than 256), that they are all represented by a 4-digit hex string. Anyway, in this example, move is A3. The Unit ID (#) in hex would be 3E. The location x,y would be 0A50, 33E0. Now, also, everything is padded with zeroes to be fixed length, so no punctuation is needed. So here's our new funky command:

A33E0A5033E0

There's a lot of other stuff that could be going on, such as variable length commands (if there are multiple units moving somewhere, for example), 'punctuation' codes (maybe all commands end with 0F0F or something). This should give you a taste though.

To write a program that reads these files, you need to basically reverse-figure-out how the developer decided to write everything. It can be anything from a minor hassle to an enormous undertaking. I'd imagine with replay/map files it's somewhere in the middle -- but a bit closer to an enormous undertaking than a minor hassle.
Adeny
Profile Blog Joined January 2009
Norway1233 Posts
Last Edited: 2010-07-13 17:20:06
July 13 2010 17:18 GMT
#211
Spoiler: Project Euler 89 solution
+ Show Spoiler +
http://pastie.org/1042721


To whoever was interested in text parsing, take a look at this. It's a very basic text parsing program. It's also somewhat efficient, runs in 15ms. I see quite a bit of room for optimization but oh wells.

Edit: Forgot to add it's in C#, which I have only been messing with for about a day now so don't expect much.
catamorphist
Profile Joined May 2010
United States297 Posts
Last Edited: 2010-07-13 17:46:20
July 13 2010 17:41 GMT
#212
On July 14 2010 02:18 Adeny wrote:
Spoiler: Project Euler 89 solution
+ Show Spoiler +
http://pastie.org/1042721


To whoever was interested in text parsing, take a look at this. It's a very basic text parsing program. It's also somewhat efficient, runs in 15ms. I see quite a bit of room for optimization but oh wells.

Edit: Forgot to add it's in C#, which I have only been messing with for about a day now so don't expect much.


A couple quick tips to let you know about C#-specific stuff that you might not realize:

* You can index into a string to get an individual character, just as if it were already an array of characters. So you don't need to copy it into a buffer to look at it.

* If you're using .NET 4.0, your file reading code could look more pleasant, like this:

foreach (string line in File.ReadLines(path))
sum += /* ... */


If you're on 3.5 or earlier, you can use File.ReadAllLines to do the exact same thing, but ReadAllLines reads the whole file into memory at once so it may not be so hot for a big file.
http://us.battle.net/sc2/en/profile/281144/1/catamorphist/
darmousseh
Profile Blog Joined May 2010
United States3437 Posts
July 13 2010 17:54 GMT
#213
I'm about to redesign an entire system for the company i work for (a small warehouse company) and am interested to know if anyone uses .NET MVC 2 and how it stacks up against other web frameworks like ruby on rails or Zend.

Developer for http://mtgfiddle.com
Adeny
Profile Blog Joined January 2009
Norway1233 Posts
July 13 2010 18:42 GMT
#214
On July 14 2010 02:41 catamorphist wrote:
Show nested quote +
On July 14 2010 02:18 Adeny wrote:
Spoiler: Project Euler 89 solution
+ Show Spoiler +
http://pastie.org/1042721


To whoever was interested in text parsing, take a look at this. It's a very basic text parsing program. It's also somewhat efficient, runs in 15ms. I see quite a bit of room for optimization but oh wells.

Edit: Forgot to add it's in C#, which I have only been messing with for about a day now so don't expect much.


A couple quick tips to let you know about C#-specific stuff that you might not realize:

* You can index into a string to get an individual character, just as if it were already an array of characters. So you don't need to copy it into a buffer to look at it.

* If you're using .NET 4.0, your file reading code could look more pleasant, like this:

foreach (string line in File.ReadLines(path))
sum += /* ... */


If you're on 3.5 or earlier, you can use File.ReadAllLines to do the exact same thing, but ReadAllLines reads the whole file into memory at once so it may not be so hot for a big file.


How do I go about indexing into a string? I know strings are essentially char arrays, but szHi[5] doesn't work at all. I tried foreaching through a string, but I don't think this would work;

foreach (char c in szMyString)
{
if (c+1 == 'M')
}


Because from what I can gather char c wouldn't be an index, but rather the value of the char. The foreach for reading the file looks a bit better though, don't know if it's different performance wise.
catamorphist
Profile Joined May 2010
United States297 Posts
July 13 2010 18:48 GMT
#215
I don't know quite what you're observing, this should work:

string s = "fatso"; char ch = s[2]; // ch is 't'


See http://msdn.microsoft.com/en-us/library/362314fe(VS.71).aspx for details.

You're right that foreach iterates over values and doesn't let you get at the index, so that wouldn't work out. You would be best off with a for loop just as you have it.

File.ReadLines uses a StreamReader internally in a loop, just like you've written it, so there shouldn't be any noticable performance differential at all.
http://us.battle.net/sc2/en/profile/281144/1/catamorphist/
Adeny
Profile Blog Joined January 2009
Norway1233 Posts
July 13 2010 18:51 GMT
#216
Sorry you're right, I don't know how I got the string stuff mixed, maybe I thinking C/++ for a minute there.
spinesheath
Profile Blog Joined June 2009
Germany8679 Posts
July 13 2010 19:02 GMT
#217
On July 14 2010 03:51 Adeny wrote:
Sorry you're right, I don't know how I got the string stuff mixed, maybe I thinking C/++ for a minute there.

C++ strings allow access via operator[] too, and foreach in C++ is a template that basically takes a container class and a functor. You should not confuse for(int i = first ; i != last ; ++i) with a foreach loop. You can only use it to emulate one, but it is something different.
If you have a good reason to disagree with the above, please tell me. Thank you.
dimfish
Profile Blog Joined February 2010
United States663 Posts
July 13 2010 19:03 GMT
#218
On July 13 2010 18:59 lastkarrde wrote:
I'm looking to get into parsing binary information such as SC replays and maps. I've read through the source of some parsing projects and to me it seems as if they are looking for specific codes (memory codes?) in the file which map to an event/action in plain english. Could someone explain this to me?

I also don't know what words to search for when trying to find more information on this subject. I have tried binary file parsing to no avail. Any ideas or links to docs/tutorials?

Thanks in advance for any help.


RoTaNiMoD already posted a great explanation of the way to approach data file formats, but I was curious if you meant SC as in original or maybe SC2. I wrote the sc2 map analyzer which has a lot of data file parsing to do, and if that's where you at then you should definitely check out all the information the dudes at SC2Mapster.com figured out about the internal map formats. They have a section for replays but it looks like nobody has started pulling those apart over there yet. In that case you might want to PM Dakota_Fanning here at TL who wrote the sc2gears tool to rip open replays.

It's fun stuff, and I hope you get your project going.
Adeny
Profile Blog Joined January 2009
Norway1233 Posts
Last Edited: 2010-07-13 19:40:07
July 13 2010 19:28 GMT
#219
On July 14 2010 04:02 spinesheath wrote:
Show nested quote +
On July 14 2010 03:51 Adeny wrote:
Sorry you're right, I don't know how I got the string stuff mixed, maybe I thinking C/++ for a minute there.

C++ strings allow access via operator[] too.


*Mind blown*. I have been wrong all my life... How did I miss this?

THE HOOPS I HAVE HAD TO JUMP. THE ARRAYS I HAVE HAD TO CAST. Etc.
Epsilon8
Profile Blog Joined May 2010
Canada173 Posts
July 13 2010 20:06 GMT
#220
I think it would be cool if we had a poll on the first post in the thread that allowed you to vote for your favourite language. I would be really interested in that.
If you wish to travel far and fast, travel light. Take off all your envies, jealousies, unforgiveness, selfishness, and fears.
Prev 1 9 10 11 12 13 1032 Next
Please log in or register to reply.
Live Events Refresh
Big Brain Bouts
16:00
#122
SHIN vs Elazer
Percival vs Nicoract
Reynor vs Lambo
RotterdaM908
Liquipedia
Epic.LAN
13:00
Epic.LAN 48 Group Stage
epiclan55
Liquipedia
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
RotterdaM 908
UpATreeSC 118
Livibee 72
mouzHeroMarine 67
BRAT_OK 53
RushiSC 35
MindelVK 11
StarCraft: Brood War
Calm 4187
GuemChi 2001
Rain 1872
EffOrt 730
Mini 674
BeSt 418
ZerO 243
Rush 225
Larva 201
firebathero 142
[ Show more ]
ggaemo 131
Dewaltoss 112
hero 79
Sharp 56
soO 47
Free 42
Sexy 38
sorry 32
Terrorterran 25
Hm[arnc] 21
Rock 19
NaDa 15
ajuk12(nOOB) 11
Dota 2
qojqva3737
Fuzer 82
Counter-Strike
fl0m1526
ScreaM1326
byalli858
allub367
Heroes of the Storm
Khaldor166
Trikslyr63
Other Games
singsing2002
Beastyqt532
B2W.Neo413
XaKoH 178
ToD98
QueenE62
ZerO(Twitch)16
Organizations
Other Games
gamesdonequick2294
StarCraft 2
TaKeTV419
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
[ Show 15 non-featured ]
StarCraft 2
• intothetv
• AfreecaTV YouTube
• Kozan
• IndyKCrew
• LaughNgamezSOOP
• Migwel
• sooper7s
StarCraft: Brood War
• Michael_bg 8
• 80smullet 5
• BSLYoutube
• STPLYoutube
• ZZZeroYoutube
League of Legends
• TFBlade1215
Other Games
• imaqtpie472
• Shiphtur403
Upcoming Events
Replay Cast
6h 35m
RSL Revival
15h 35m
Clem vs Lambo
Scarlett vs Cure
CranKy Ducklings
16h 35m
Epic.LAN
19h 35m
IPSL
22h 35m
Dragon vs Hawk
RSL Revival
1d 15h
Classic vs Trap
herO vs SHIN
Sparkling Tuna Cup
1d 16h
OSC
1d 19h
IPSL
1d 22h
Bonyth vs Ret
WardiTV Weekly
2 days
[ Show More ]
Monday Night Weeklies
2 days
PiGosaur Cup
4 days
The PondCast
4 days
Replay Cast
5 days
CrankTV Team League
5 days
Replay Cast
6 days
CrankTV Team League
6 days
Liquipedia Results

Completed

Proleague 2026-07-13
HSC XXIX
Eternal Conflict S2 E2

Ongoing

IPSL Spring 2026
Acropolis #4
YSL S3
CSL 2026 Summer (S21)
KCM Race Survival 2026 Season 3
Escore Tournament S3: W3
RSL Revival: Season 6
CranK Gathers Season 4: BW vs SC2 Team League
SCTL 2026 Spring
Stake Ranked Episode 3
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

Upcoming

ASL S22 SEASON OPEN Day 1
Escore Tournament S3: W4
ASL S22 SEASON OPEN Day 2
Escore Tournament S3: W5
CSLAN 4
Blizzard Classic Cup 2026
HSC XXX
SC4ALL II: StarCraft II
Kung Fu Cup 2026 Grand Finals
Light Tournament 2026
Eternal Conflict S2 Finale
Eternal Conflict S2 E3
Logitech G Connect 2026
StarSeries Fall 2026
FISSURE Playground #5
BLAST Open Fall 2026
Esports World Cup 2026
BLAST Bounty Summer 2026
BLAST Bounty Summer Qual
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...

Disclosure: This page contains affiliate marketing links that support TLnet.

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.