Block ads on Kakaotalk client

The kakaotalk client on Mac is okay but the Windows client is full of ads: ads in friend list, ads in chat, ads in the corner of the screen, ad under your cursor.

It annoyed me to no end. So what’s the solution? Find a way to block it!

I used a nifty tool called TCP View (very old, but still works). It can resolve domains from IP address and is not as heavy as Wireshark 😉

I looked up the domains kakaotalk.exe connects to and found the following, so I added this to /Windows/System32/drivers/etc/hosts

#Block kakao ads
0.0.0.0 alea.adam.ad.daum.net
0.0.0.0 wat.ad.daum.net
0.0.0.0 display.ad.daum.net
0.0.0.0 analytics.ad.daum.net
0.0.0.0 ad.daum.net

And voilà! No more annoying ads!

Update

Since Kakao stopped offering the Windows Store version (which had less ads), it’s time for an update

There’s a Korean program that runs in the background and block the ads for you.

You can find it here https://github.com/blurfx/KakaoTalkAdBlock . The drawback is you need to install and keep it running with administrator priviledges, but at least it’s open source so you can have a look 🙂

Calling C# from C++

Most of the post on the internet about interoperability is the other way around (Calling C++ from C#) since C# is apparently the superior language in terms of developer friendliness. But a part of research work is to make weird combinations of system work regardless of the reason.

I succeeded in doing just that thank to this Visual C++ example (documentation is available in part 1 of the tutorial).

One thing to add is, I needed a tool to export .NET 4.0 to .tlb files so I can use the same assemblies in C++ (pure C++ and not C++.NET). The tool is called tlbgen, and the syntax is quite simple:

tlbgen System.Net.dll

Management task: Remote shutdown utility

I run a simple web server to serve as a storage medium for my mobile devices (I don’t like using dropbox or other online storage solutions because they don’t offer much space and they hogs up bandwidth unnecessarily). Before I go to sleep I usually shut down the server to save energy, but in order to do so, I have to have another computer turned on to perform remote access into the server and shut it down via command line. Occasionally, I would turn off my work computer before I remember that I want to shut down the server and I’m too lazy by then to turn on my work computer again.

That’s why I wanted an application that is capable of shutting down Windows on my behalf. The scenario is like this: because I can access FTP service from my phone, I will create a file, namely ‘shutdown’; when the server sees this file, it will delete the file and initiate shutdown. Quite simple.

To shut down, I use Windows management interface (System.Management namespace in C#)

        static void Shutdown()
        {
            ManagementBaseObject mboShutdown = null;
            ManagementClass mcWin32 = new ManagementClass("Win32_OperatingSystem");
            mcWin32.Get();

            // You can't shutdown without security privileges
            mcWin32.Scope.Options.EnablePrivileges = true;
            ManagementBaseObject mboShutdownParams =
                     mcWin32.GetMethodParameters("Win32Shutdown");

            // Flag 1 means we want to shut down the system. Use "2" to reboot.
            mboShutdownParams["Flags"] = "1";
            mboShutdownParams["Reserved"] = "0";
            foreach (ManagementObject manObj in mcWin32.GetInstances())
            {
                mboShutdown = manObj.InvokeMethod("Win32Shutdown",
                                               mboShutdownParams, null);
            }
        }

From here

And the rest is just a loop to check if the file exists

        /// 
        /// The main entry point for the application.
        /// 
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            while (true)
            {
                if (!System.IO.File.Exists("D:\Shutdown"))
                {
                    Thread.Sleep(500);
                }
                else
                {
                    System.IO.File.Delete("D:\Shutdown");
                    Shutdown();
                    return;
                }
            }
        }

That’s it, I run the application and it will wait until I create a file named ‘shutdown’ in D:, it will perform shutdown and quit

Here’s the sample code and binary

Invisible folder for Windows

Recently there have been quite some posts about how to create an invisible folder, as the process is quite complicated, I thought “why not prepackage it?”. And here it goes, your invisible folder (extract and enjoy).

Why is it in rar format you ask? Because Windows’ default zip still can’t handle Unicode properly a decade later.

Typing Japanese with Dvorak keyboard

From StackOverflow

I did this for chinese. I just did it for japanese as well. Heres what you do:

Using the following link by Michael Kaplan, please read it before you change your continue.

http://superuser.com/questions/38781/how-can-i-use-the-chinese-ime-with-a-dvorak-layout

Start > Run > type regedit > press enter (registry editor will open)

Expand HKEY_LOCAL_MACHINE > Expand SYSTEM > Expand CurrentControlSet > Expand Control > Expand Keyboard Layouts > Select E0010411(japanese IME) > Export a copy for backup > Double-click Layout file > type kbddv.dll in the value data box.

You may need to restart your computer. note that E0010411 is for japanese, E00E0804 is for chinese.

Good luck!