Skip to main content

Nonexaustive list of web acronyms

AFAIK As Far As I Know.

AFAIR As Far As I Remember.

AFK Away from Keyboard.

AIUI As I Understand It.

AKA Also Known As.

ALAP As Late As Possible.

ASAP As Soon As Possible.

ASD – See LOL (using the leftmost 3 letters on a QWERTY keyboard.

ASL Age, Sex & Location.

ATM At The Moment.

AYQ Ask Your Question.

BAK Back At Keyboard.

BATK Back At The Keyboard.

BBFN Bye Bye For Now.

BBIAF Be Back In A Few.

BBL Be Back Later.

BBQ Be Back Quick.

BBS Be Back Soon.

BFF Best Friend Forever.

BRB Be Right Back.

BTW By The Way.

CU See You.

CYA See You Again.

D/C Disconnected..

DND Do Not Disturb.

F2F Face To Face.

FAQ Frequently Asked Questions.

FOAF Friend Of A Friend.

FTR For The Record.

FTW For The Win or Fuck The World.

FYI For Your Information.

G2G Got To Go.

GBTW Go Back To Work.

GL HF Good Luck, Have Fun.

GMAB Give Me A Break.

GMTA Great Minds Think Alike.

GRZ Gratz.

GTFO Get The Fuck Out.

GZ Gratz.

HAND Have A Nice Day.

HTH Hope This Helps.

IANAL I Am Not A Lawyer.

ICYMI In Case You Missed It.

IDK I Don’t Know.

IHM I Hate Myself.

IIRC If I Recall Correctly.

ILY I Love You.

IMO In My Opinion.

IMHO In My Humble Opinion.

IRL In Real Life.

JFTR Just For The Record.

JFYIJust For Your Info.

J/K Just Kidding .

JLYK Just Letting You Know.

JSYK Just So You Know.

KTB Ok Thanks Bye.

LMAO Laughing My Ass Off .

LMK Let Me Know.

LOL Laughing Out Loud.

LTNS Long Time No See.

M8Mate.

MFW My Face When.

MMORPGMassive Multiplayer Online RPG.

MYOB Mind Your Own Business.

N1 Nice One.

N8 Night.

NP No Problem.

NSWF Not Suitable For Work.

NVM Nevermind.

OAO Over And Out.

OFW Out For Work.

OMG Oh My God.

OOO Out Of Office or Out Of Order.

OOW Out Of Work.

OTP One True Pairing.

PAW Parents Are Watching.

PLMK Please Let Me Know.

PVE Player Versus Environment.

PVP Player Versus Player.

PWNED Owned (supposedly missing the O key).

RL Real Life.

RR RickRolling, RickRolled.

ROFL Rolling On (the) Floor Laughing.

ROTFL Rolling On The Floor Laughing.

ROTFLMAO Rolling On The Floor Laughing My Ass Off.

ROTFLASTC Rolling on the floor laughing and scaring the cat.

RPG Role-Playing Game.

RTFB Read The Fucking Book.

RTS Real-Time Strategy (Game).

RTFM Read The Fucking Manual.

SMH Shaking My Head.

SMHO Shaking My Head Off.

STFU Shut The Fuck Up.

TBH To Be Honest.

TGIF Thank God It’s Friday.

TINLAThis Is Not Legal Advice.

TL;DR Too Long, Didn’t Read.

TMI Too Much Info.

TTYL Talk To You Later.

TY Thank You.

TYT Take Your Time.

TWD Texting While Driving.

WB Welcome Back.

WTF What The Fuck.

WTG Way To Go.

WTH What The Hell.

YHBT You Have Been Trolled.

YOLO You Only Live Once.

YVWYou’re Very Welcome.

YW You’re Welcome.

zOMG Oh My God (supposedly missing the shift key).

 

Grand Total (so far): 111

IIS Express: allow external requests from remote clients & devices

Starting from Visual Studio 2012 the good ol’ Cassini Web Server has been replaced by IIS Express. While Microsoft spent quite an amount of words describing the benefits brought by this not-so-minor change, the strictness of the security policies featured by the newcomer raised more than an issue between those accustomed to the old environment: the new Property window doesn’t allow devs to change the local hostname/folder or to assign a custom TCP port anymore, which can be crippling in most scenarios. Another serious issue is due to the fact that IIS Express, unlike Cassini, doesn’t natively accept external request, meaning that no network-connected client can be used to debug the website anymore.

HTTP Error 503. The service is unavailable.

OUCH!.Don.Draper

We’re talking about a serious issues here, expecially in times like this where everything is about responsive, mobile-friendly, postback-free web-based stuff which almost always need to be tested on many different devices.

The Issue.

The three reasons preventing IIS Express to accept external requests are:

  1. Its configuration XML file, where Visual Studio saves the (auto-generated) web application settings once we run it in Debug or Release mode the very first time.
  2. The security restrictions (ACL settings) on the HTTP.SYS component, who doesn’t allow a non-elevated application – like Visual Studio executed like the current user – to handle network traffic.
  3. The default Windows Firewall (or any other firewall installed) settings, hardly allowing an arbitrary set TCP port to accept outcoming calls.

The Fix.

Let’s see what we can do to go through all these problems:

  • Be sure you don’t ave any open Visual Studio instance.
  • Open the file  %userprofile%\Documenti\IISExpress\config\applicationhost.config  , being %userprofile% your user folder – like  C:\Users\YourUsername\.
  • Look for the entry corresponding to the web application we want to modify and change its binding element in the following way:
    <binding protocol="http" bindingInformation="*:<port>:*" /> All we need to do there is to replace a couple of localhost with *, leaving the automatically assigned <port> as it is. If you really need to change that port, replace it with another valid, free TCP port (like 8080) and perform the following step. Otherwise, skip it and go to the step next to it.
  • If you changed the automatically assigned TCP port you also need to open your web application project (.csproj) and solution (.sln) files and ensure there are no references to the previous port: they can be there or not depending on your choosen project type (Web Application, MVC App, Web Site, etc.). If that’s the case, replace the old port with the new one.
  • Open a Command Prompt (with Administrator permissions) and type the following:
    netsh http add urlacl url=http://*:<port>/ user=everyone Putting the application TCP port in place of <port>. If you get an error messae (1789) it means that the Everyone user group is not present on your system, something who can occur in some Windows localizations. If that’s the case, just replace everyone with the corresponding user group name. Instead than doing this step you could also try and execute Visual Studio with administrator permissions.
  • Open Windows Firewall advanced configuration panel and add an inbound rule to enable the inbound traffic for the application IISExpress.exe OR for the TCP port used by your web application. If you disabled it for another product, do the same with it. If you ain’t using any – are you sure? – you can either take the chance to fill the void and then perform the above or just skip this step.

Once you did this you can launch Visual Studio and run your application in Debug or Release mode: you should be able to access it from any external, network-connected device using the following web address:

http://<lan-ip-address>:<port>/

Visual Studio 2015 Update

As pointed out by Zachary Pittman (many thanks to him for reporting this), if you’re using the IIS Express bundled with Visual Studio 2015, you will find the relevant applicationhost.config file within a /.vs/  subdirectory within your project root folder. However, whenever you’ve unsure about the path, you can always right-click to the IIS Express icon in the system tray: from there, > Show all applications, select your site and look for the config file location.

Alternative routes.

Let’s just say it: IIS Express, with all its flaws and missing configuration features, is far from being the best web development server available. Anyone looking for a more robust, versatile solution will probably like to switch to something like IIS 7.5 (or above). The main issue there is due to the fact that in order to use IIS togheter with Visual Studio you could be forced to launch it with administrator permissions to avoid the following error message:

4743_error

This happens because Visual Studio needs to have access to the IIS metabase, a priviledge reserved to the Network Administrators group.

OUCH!.Don.Draper

UPDATE: If you don’t feel like executing Visual Studio with administrative priviledges you can use this neat workaround to permanently grant the IIS Metabase folder permissions to the current user in a quick and easy way.

What else can we say? Happy (so to speak) coding!

EDIT: If you want to dive deeper into IIS Express mechanics and understand the reasons that moved Microsoft to make it become the successor of Cassini I would suggest you to read this excellent (despite its age) post by Scott Hanselman. Have a good reading!

CSS namespaces: how to avoid conflict between style sheets files

The increasing need for speed in developing responsive, mobile-friendly websites recently shifted more and more web developers towards the use of some advanced  CSS-based framework and/or boilerplate like Bootstrap, Foundation, GumbyYAML, Skeleton and many others. Each one of them offers a wide amount of full-baked classes and selectors to fullfill almost any UI-related task and eventually reach the ultimate goal: make your website look great on every major platform and device without losing anything to any major desktop browser without losing years working to the front-end – and countless nights running client-based tests.

This is why all the aforementioned framework are born, and chances are they will greatly help you achieving such a great result… unless their class and selector names conflicts with yours (and/or other’s) already existing css files.

The issue.

Let’s take the Bootstrap framework, likely the most-used one up to this day. Here are some of it’s interface-related CSS classes:

… and more.

Needless to say, any of these is full of parameters who will most likely break some egg in other classes sharing that same name… Being them in one of your css file, shipped with some fancy JQuery plugin or included in any other client-side library or module.

The fix.

The first thing that comes to (almost) everyone’s mind is the dreadful “find & replace” workaround. We start with renaming “our” offending classes, then we switch to those inside the plugins / modules / libraries trying to make everything work togheter without hassles. Is that a good approach? For a very small website, maybe. But if we’re talking about a decently-sized project we can say it’s definitely a no-go.

WHY.Jesse.Pinkman

Despite what it could seem, we’re talking about a long, delicate and often risky business. You won’t often be able to perform such a task automatically,  especially if your site contains Javascript scripts who use class selectors to fullfill their job and you could easily miss like the one in the following example:

Unless you’re willing to take these risky roads we suggest to adopt a much more robust, secure approach. The next part of this article will show you how you can encapsulate any existing CSS file – yours or shipped, as long as it can be locally hosted  – in its own dedicated Namespace. In order to do this we’re going to use a  CSS pre-processor among those currently available: the most used up to these days are undoubtely SASS, well-known between Linux environments, and LESS, which is probably the best choice for those working on Windows since its flawless integrated with Visual Studio 2012 (and above) thanks to the wonderful Web Essentials extension add-on.

What’s a CSS pre-processor? To keep it simple, we’re talking about a code compiler who can build a valid .css stylesheet file starting from a .scss or .less source: the latter is basically a stylesheet file itself with many additional features obtained thanks to a script-alike proprietary syntax. The pre-processor will read these instructions and use them to build a fully-compatible CSS file.

Here’s an example of a .less file:

And here’s the .css file built upon it:

A full reference guide with a lot of working examples is available on either pre-processor’s web site:

We’ll just stick to what we need to do in order to define our namespace. The syntax, let alone the file extensions, is identical. In the following example we used .less:

Once built, the resulting CSS file will contain all the selectors defined in the two included files: the .namespace-name class will also be prepended to any of them, meaning that it will be taken into account only inside a container element (DIV, BODY or any other) with the .namespace-name class.

Let’s go further: considering the above example, here’s how we can create a namespace for the Bootstrap framework‘s CSS files:

The first rules (before the two @import) are those applied to the BODY element by the bootstrap.css file and therefore inherited by any other in-page elements. The only way we have to reproduce that same behaviour is to add them directly to our namespace class. Once we did that, we are free to add the .bootstrap class to the BODY or anywhere we want to be able to use the Bootstrap styles.

IMPORTANT: Notice how, just like the “main” namespace file, all the included files also need to have the extension supported by the choosen pre-processor in order to work. If you want to import a standard .css file you can always rename it accordingly: the pre-processor will seamlessly compile them – after all they’re just augmented stylesheet files themselves. If you chose .less you can also avoid the rename: just use  @import (less) instead of @import as explained here.

Happy coding!

Hearthstone Mage Aggro Deck [Low Budget]

Hearthstone-Goblins_vs_Gnomes

I recently posted to Hearthpwn.com a low-budget – but still very effective – deck I’m running with excellent results in EU ladders. If you’re looking for a very affordable mage deck to ramp up your local ladder you’ll probably want to give it a try.

If you can’t afford the two Legendary beasts you can easily replace them with another Sludge Belcher + Stormwind Champion, Feugen + Stalagg, Archmage + Loatheb or any other heavy hitter combo you might have.

Also feel free to replace any single 2-crystal drop (except Knife Juggler, which is the key card of the deck) with a Nerubian Egg, which is  an excellent choice here.

422.Knife-JugglerThe deck is quite versatile so you can run different strats depending on your first pick: a turn-1 or turn-2 Knife Juggler followed by many deathrattle drops will force your enemy to spend a sub-optimal removal spell instead than playing 1 or 2-health creatures (which you could easily dispatch with a cheap drop + hero power). You’ll also be fine by opening with a Mana Wyrm or an Undertaker , which you can easily level up to deal some decent damage / sealing up some good creature trades until they die – often to a much more expensive and tempo-crippling removal spell.

7737.Undertaker

If you manage to force your enemy to a defensive role you will probably lose the card advantage, while you can keep up some by using your 2 Arcane Intellect spells and the Loot Hoarder. Keep in mind, tho, that your real goal with this deck is to try and have a constant creature and health advantage thanks to the deathrattle spawning dudes and to the secrets you have to prevent removal damage, copy your opponent drops and put two more copies of a dead minion back to your hands – which can be devastating if the dead one is a Knife Juggler or any other 4+ creature you play.

If you manage to keeep yourself (and your creatures OR hand size) alive and well up to the late game, you will have the two legendary creatures which, coupled with the fair amount of removal / AE removal / fireball spells you’re equipped with, will greatly help you to seal the deal.495.Ysera

Just remember to keep the Counterspell for the enemy AE removal (depending on class you’re playing against) and you’ll be fine against most opponents. Also don’t forget some few easy and nasty combos you can pull out by abusing the Khel’Thuzad mechanic coupled with a Knife Juggler or an Undertaker.

7742.Kel'Thuzad

The deck is publicly available on hearthpwn.com: click here to see the full card listing.

Enjoy!

 

 

 

Using JQuery UI and Bootstrap togheter in the same web page

In the past few months we’ve seen the Bootstrap framework became more and more popular among web developers. The reasons are fairly obvious, we’re talking  about a powerful CSS/JS enhancement library featuring a lot of useful stuff to build a responsive, mobile-friendly webpage fully compatible with every major browser/device. The most recent version of the framework (v3.3.1 by the time of this post) contains a lot of useful javascript plugin requiring JQuery v1.9.0 or higher in order to work: there’s no doubt that some of these websites are also running JQuery UI.

These 2 frameworks are indeed able to work togheter, but we need to pay attention to at least two naming conflicts between them which need to be fixed in order to avoid JS errors and, most importantly, get them to work properly. We’re talking about the tooltip and button plugins, which happen to exist in both of these libraries with the exact same name.

The Issue.

Let’s take the tooltip plugin as an example. Open the address http://jqueryui.com/tooltip/ and look at the sample code – by clicking on the “view source” link – to see how the JQuery UI tooltip plugin actually works:

The highlighted text shows a call to the tooltip function which, thanks to JQuery UI, is added at runtime to any JQuery object. Bootstrap does the exact same job, as shown in the official tutorial:

This nasty naming conflict prevents the plugins to work an might also generates some Javascript errors depending on the framework <script> references order inside the web page. For example, here’s what you’ll most likely get in your Javascript Console if Boostrap is inserted after JQuery UI and the latter’s tooltip plugin is being used:

Uncaught TypeError: Cannot read property ‘documentElement’ of null

We get this message because the tooltip plugin provided by JQueryUI has a completely different – and hardly compatible – interface than the Bootstrap plugin sharing its name.

 The Solution.

The best way to make the 2 libraries blend togheter and “constructively” fix the aforementioned naming conflicts is to use the not-so-well-known $.widget.bridge plugin, which allows us to re-define each previously assigned prototype function name. The plugin is already included inside the JQuery UI standard distribution package, so we won’t add any additional stuff to our website. The usage is quite simple:

These commands need to be executed after the JQueryUI and before the Bootstrap js file references. In the following example we can see a full implementation example in the <head> block of a common webpage:

After you do this, the tooltip and button prototype methods will be univocally routed to the Bootstrap ones: those provided by JQuery UI will also be usable as long as we call them by using the new alias we gave them: uitooltip and uibutton.

References:
http://stackoverflow.com/a/27745464/1233379 (my answer on StackOverflow which kinda inspired this post).

 

Close