This is my shell prompt. It automatically stretches to fill the width of the window,
and uses colors to help the eye to separate commands from their output.
When type of the only argument matches the type of arguments array,
the parser treats it as an attempt to pass precomposed arguments array.
What they should do is to always treat one argument as one argument (logically),
and require params modifier whenever the programmer wants to pass a precomposed array of arguments:
12
foo(null);// would pass one parameter: ps.Length == 1foo(paramsnull);// would pass the array: ps == null
That would fit very nice given ref and out already work this way.
Python uses exactly this approach (it does a lot of things right way, that's why I love it):
12
foo(args)# always treats args as one variable argumentfoo(*args)# always treats args as array of variable arguments
Short story: the viewing angle (FOV) in Mass Effect games is too small, PC players are upset, but developers never cared.
Here is how to fix it in each of three Mass Effect games.
This article is how to actually fix it.
What is widely reposted between forums as FOV fix (by binding several FOV commands to keypad) is a bad solution.
That command is a global override; each game mode requires a different FOV but that command forces the same one on them all,
consequently messing those which are not designed for different FOV (like conversations and cutscenes).
That is why they also need to bind a key to “FOV 0″ to temporarily turn off their “fix” every time a cutscene appears.
When a cutscene ends, they have to press a key again; and so the player has frequently re-fix during play.
The fix in this article changes FOV permanently and without breaking anything.
Mass Effect 3
Note: you might be banned from multiplayer for changing Coalesced.bin.
(Optional) Also fix mouse acceleration. You'd be surprised how better will the aiming be.
Search for these values in the file and make sure they are false:
That will require to lower sensitivity somewhat. I'm using this value:
MouseSensitivity=0.15
If you've been using the bad FOV fix previously, revert SharedAim and RightMouseButton to their original values.
Download ME2IniFixer into the same folder and run it to fix the file. If the game started crashing on start, it means you have used a bad text editor, or did not apply ME2IniFixer. Restore Coalesced.ini from backup and retry.
See the end of this article about how to use it (hint: press Period . key).
Save a copy of Coalesced.ini — in case game auto-update rewrites the file back to original one.
Mass Effect 1
For some reason I never wanted to fix FOV in ME1, probably because big camera distance kind of compensates low FOV. But people asked so here it is.
Open Documents\BioWare\Mass Effect\Config\BIOInput.ini with any text editor.
Locate [BIOC_Base.BioPlayerInput] section and add the Period binding into it:
[BIOC_Base.BioPlayerInput]
Bindings=(Name="Period",Command="set BioCameraBehaviorFollow CAMERA_FOV 100 | set BioCameraBehaviorZoom CAMERA_FOV 40")
See the next chapter about how to use it (hint: press Period . key).
How to use it
Get to a stage when your Shepard can run around, and hit Period . key. You only need to do it once, then it works until you exit the game.
This fix sets FOV to 100. You can try other values, the good ones are in the range 80..120.
Theoretically the Unreal engine allows to set object properties on load using a config file and then no key binding would be needed. However it does not work with Mass Effect games. Probably because developers rewrite camera's FOV with the hardcoded value 75after the config has been read.
Whenever a discussion of Unicode encodings comes up, someone eventually claims that
UTF-32 has an advantage of random character access and character-by-character manipulation.
Guys, there is no such thing as random access to characters or character-by-character manipulation
in real-life Unicode text.
UTF-32 gives random access to code points, which is entirely different thing than characters.
Here are things that you might think are easier in UTF-32 than in UTF-8, but in fact they are not:
Manipulating case. You can not take a char at str[i], change it's case and put it back into str[i].
Some code points capitalize to several ones (the German letter ß is capitalized as "SS"; some ligatures like ff or fi do not have uppercase and become FF anf FI).
The Greek letter Σ has two different lowercase forms: "ς" and "σ" depending on context.
Counting characters. Several code points may produce only one character (diacritics, devanagari scripts),
and one code point should be treated as two (ligatures).
One string can have two times more code points but be shorter than another.
Unicode is ultimately variable-length thing.
Drawing or interaction. You can not draw code points individually for the same reasons.
Mouse clicks on a displayed glyph may pick a range of code points, not just one index.
Advancing text cursor in response to right arrow → key is much more complicated than incrementing a position number.
Searching. Searching for even an ASCII character like 'e' by looking for its code point may falsely succeed when it's preceeded with a diacritic.
And it will fail to find 'f' when it's composed into a ligature 'fl'.
Comparison. The only comparison you can do by looking at individually accessed code points is equivalent to memcmp.
For example, in many lanaguages users want characters with diacritics to match precomposed equivalents.
Ordering and sorting. Even “plain” U.S. English text that you would hope to be restricted to ASCII
will contain fancy characters (think Beyoncé)
and therefore comparing code points will not give you proper alphabetic ordering.
The random access to code points, which makes UTF-8 and UTF-16 different from UTF-32, is rarely (if ever) useful.
The random access to characters does not exist.
Additionally, UTF-16 and UTF-32 have the disadvantages of wasted memory and endianess conversions.
I believe the only reason wchars are still alive are that Windows NT, Java, and the ICU library
made the wrong call of picking UCS-2 once, and now they are stuck with backward compatibility.
Thinking more of it, today a freshly designed system should have:
no [] operator for objects of String in the first place
String as a thin wrapper over u8/u16/u32 array to be able to take over any data without re-encoding
Unlike with Mac OS X Lion, installing Xcode 3 on OS X Mountain Lion is not problem-free: the kernel extensions render the system unbootable and you will have to repair it. Also, Interface Builder plugins from iOS platform won't load, so you can't use iOS SDK with Xcode 3 anymore.
Make sure you know how to boot into single-user mode (hit Cmd+S on boot).
So I finally had time to move for Octopress. Hope it will be better than anything before.
Using Vim to edit posts in Markdown? Source code highlighting? Git deployment? No SQL? Transparent guts?
Hell, yeah.