Getting the Yoast WordPress SEO Plugin to work with the Gonzo theme

I changed a site running on the Gonzo wordpress theme to run the Yoast SEO plugin instead of AIO SEO since my comparisson test of these two plugins got me better results for yoast. But after switching the plugin the webpage was missing a proper meta description part. I took a look at the Gonzos theme template files, concretely the header.php file.

It looks like this:

	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 
	<title>< ?php wp_title();?></title>
 
	< ?php if ($omc_favicon !== NULL) { ?><link href="<?php echo $omc_favicon; ?/>" rel="shortcut icon"/>< ?php } ?>
 
	<meta name="description" content="<?php bloginfo('description');?/>">
 
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/> 
 
	< ?php wp_head(); ?>

As you just saw it has wp_title() for the page title and a hardwired meta description built in. While wp_title() is fine with the Yoast SEO add, the hardwired description tag blocks Yoast from writing the tag. ALl I needed to do to fix that, was removing the line:

	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
 
	<title>< ?php wp_title();?></title>
 
	< ?php if ($omc_favicon !== NULL) { ?><link href="<?php echo $omc_favicon; ?/>" rel="shortcut icon"/>< ?php } ?>
 
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/> 
 
	< ?php wp_head(); ?>

Now the Yoast SEO addon can add the description meta tag and everything should work fine.

What does the > (bigger than) sign mean when it comes to CSS selectors?

If you use a < (bigger than) sign when chaining IDs in the CSS selector it means you only want to select the direct child, but not children below the direct child as you would if you only use a space character instead of >.

An example:

<div class="test">
  <div> <!-- direct child -->
    <div></div> <!-- child of direct child -->
  </div>
</div>

As you can see we got an outer div with a class named “test” that is wrapping two nested div tags.

An css selector example for accessing the direct child

If you use

.test > div

you will only select the direct child, but not the children nested below it.

An css selector example for accessing all children

If you use

.test div

you will access the direct child and all children below it.

An css selector example for accessing the child node of the child

If you want to only access the child of the direct child, you can chain the greater then signs:

.test > div > div

Read the stackoverflow posting on the topic for some extrainfos:

http://stackoverflow.com/questions/4459821/css-selector-what-is-it

Translating The WordPress Auction Nudge Addon To German

I needed to integrate eBay auctions into a wordpress based website and chose the Auction Nudge Plugin for it, since it seems to be the most realiable addon for this task.

Auction Nudge hints on how to translate the language, but doesn’t explain how to do it in detail. Read the official docs here:

http://www.auctionnudge.com/demos/demo-translate.html

The article suggest you should include the example code into the page that the eBay listing is being shown on. I wanted to use it on every page, so decided to move another way, I am going to include the script into the footer of every page. For that I could hack some hook into the child theme, but I chose not to, since there’s a nice comfortable plugin that allows me to get to the goal without editing code directly:

https://wordpress.org/plugins/add-to-footer/

I installed it and went to the Settings (Plugin List -> Settings button below Plugin description). There I enabled the plugin and copied my code:

<script type="text/javascript">
			function auction_nudge_loaded() {
				jQuery('div.auction-nudge li, div.auction-nudge td, div.auction-nudge th, div.auction-nudge strong').each(function() {
					//Get HTML
					var an_html = jQuery(this).html();
 
					//=== START edit for your language ===
 
					//Used in multiple themes
					an_html = an_html.replace(/Buy It Now/gi, 'Jetzt Kaufen');
					an_html = an_html.replace(/Ends/gi, 'Ablaufdatum');				
					an_html = an_html.replace(/View Item/gi, 'Anzeigen');
 
					//Only used in column theme (you don't need to edit if you are using another theme)
					an_html = an_html.replace(/Picture/gi, 'Foto');
					an_html = an_html.replace(/Item/gi, 'Objekt');
					an_html = an_html.replace(/Product/gi, 'Produkt');
					an_html = an_html.replace(/Bids/gi, 'Gebote');
					an_html = an_html.replace(/Price/gi, 'Preis');
					an_html = an_html.replace(/Time Left/gi, 'Ablaufsdatum');
 
					//=== END edit for your language ===
 
					//Update HTML			
					jQuery(this).html(an_html);					
				});
		</script>

Note: I used jQuery() where the example used $(). $() is a short cut for jQuery() and wasn’t available in the themes context.

I saved the code and reloaded the page. And my eBay listings became german. Except for the time display.

The eBay seller widget can’t be translated. A simple way to still it anyway, is by putting it into a hidden container and then copying the values using javascript to a self made widget.

Hide.ME’s Sock 5 proxy

m4s0n501

I was testing the hide.me socks 5 (socks5) service since they were selling it as part of their premium account and it was largely disappointing. I planned to use it to offer an fixed IP anonymous service on the internet as well as use it to have a bigger pool of IP adresses to spider a few 100 amazon/yelp products without getting IP banned. Sadly enough the hide.me socks5 offer is still not really usable for tasks like that.

Server locations for hide.me

hide.me vpn/socks5 servers in America / USA

  • Montreal, Canada
  • San Jose, California, USA
  • Washington, D.C., USA
  • Miami, Florida, USA
  • Salt Lake City, Utah, USA
  • Seattle, Washington, USA

hide.me vpn/socks5 servers in Europe

  • Paris, France
  • Frankfurt, Germany
  • Reykjavik, Iceland
  • Milan, Italy
  • Siauliai, Lithuania
  • Steinsel, Luxembourg
  • Haarlem, Netherlands
  • Roosendaal, Netherlands
  • Bucharest, Romania
  • Stockholm, Sweden
  • Zurich, Switzerland
  • London, United Kingdom

hide.me vpn/socks5 servers in the rest of the world

  • Hong Kong, Hong Kong
  • Marrakech, Morocco
  • Singapore, Singapore
  • Istanbul, Turkey

Sadly, hide.me isn’t a service provider for that the kind of tasks described above. Why? Hide.me has a clear focus on VPN services. The socks5 service features look like the service has just been created to accelerate and secure torrent up- and downloads. Looking at how hide.me ist a so called “non logging” service, that makes the most sense.

So, the socks5 service is only working when connecting to it over the related VPN, crippling the usage a lot. Up- and Downstream were great, set up was easy, just the VPN requirement makes the usage of the socks5 proxy complicated, sometimes impossible, since you have no local IP on applications that need it. A real pity.

If those restrictions are not an issue for you, the Socks5/VPN-service Hide.Me still will make you happy. Lots of servers in many countries, a good uplink and uncomplicated usage do speak for hide.me

Fixing quasselcore losing PostgreSQL support on debian installations

After updating an debian installation the postgreSQL using quasselcore service suddenly lost all its settings, logs, channels. I tried to manually start the server forcing the progreSQL usage to get an idea on what’s happening:

rom040:~# quasselcore --configdir=/var/cache/quassel --select-backend=PostgreSQL
2014-09-03 22:51:26 Warning: SslServer: Certificate file /var/cache/quassel/quasselCert.pem does not exist
2014-09-03 22:51:26 Warning: SslServer: Unable to set certificate file
           Quassel Core will still work, but cannot provide SSL for client connections.
           Please see http://quassel-irc.org/faq/cert to learn how to enable SSL support.
2014-09-03 22:51:26 Warning: SslServer: Certificate file /var/cache/quassel/quasselCert.pem does not exist
("QSQLITE", "QMYSQL3", "QMYSQL")
("QSQLITE", "QMYSQL3", "QMYSQL")
Core::selectBackend(): unsupported backend: PostgreSQL
    supported backends are: SQLite

Seems that quasselcore doesn’t support PostgreSQL at all anymore? What is going on?

How fix quasselcore losing postgresql support

Oh, asking google on the debian dependencies show that the package libqt4-sql-psql is gone missing. Let’s install it manually:

rom040:~# apt-get install libqt4-sql-psql
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut.
Statusinformationen werden eingelesen.... Fertig
Vorgeschlagene Pakete:
  libqt4-dev
Die folgenden NEUEN Pakete werden installiert:
  libqt4-sql-psql
0 aktualisiert, 1 neu installiert, 0 zu entfernen und 0 nicht aktualisiert.
Es müssen noch 0 B von 73,5 kB an Archiven heruntergeladen werden.
Nach dieser Operation werden 219 kB Plattenplatz zusätzlich benutzt.
Vormals nicht ausgewähltes Paket libqt4-sql-psql:amd64 wird gewählt.
(Lese Datenbank ... 116163 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacken von libqt4-sql-psql:amd64 (aus .../libqt4-sql-psql_4%3a4.8.2+dfsg-11_amd64.deb) ...
libqt4-sql-psql:amd64 (4:4.8.2+dfsg-11) wird eingerichtet ...

And it’s back to working.

rom040:~# /etc/init.d/quasselcore start
[ ok ] Starting distributed IRC core: quasselcore.

qTranslate stopped getting updates – What can you use as replacement/alternative for it?

qTranslate seem to be discontinued, at least it didn’t get updated for a while. Since the latest version has its issues with current word press versions I needed to find a replacement.

Of course I wanted to be able to convert my current qTranslate based wordpress multilanguage installations so put a focus on the import on qTranslate language files and articles.

A good solution was found fast:

https://wordpress.org/plugins/mqtranslate/

Somebody created a fork of qTranslate and keeps it updated.

Thanks!

Encoding MP3s for use in Haxe Flash exports

I needed to encode some audio samples to be used in an Haxe Flash export and remembered the troubles I first had when figuring out how to create valid MP3 files for use with Haxe. Here a quick hint to everybody that has the same issues (Haxe complains about getting Layer 1 files instead of Layer 3) with embedding. Haxe denies the import when you encode the mp3s using Adobe Media Encoder and various other tools that I tested.

Lame-Drop – a MP3 Encoder that works for Haxe/OpenFL

A tool that actually works for encoding the MP3 files for Haxe/OpenFL is Lame-Drop, which uses the Lame MP3 encoder. You can download it here:

http://www.rarewares.org/mp3-lamedrop.php

Using Adobe Scout to profile a Haxe/OpenFL flash export

I needed to do some profiling on an flash export of a mobile Haxe/OpenFL/HaxeFlixel based project. Since I own a license of adobes creative suite I decided to test Adobe Scout.

But it didn’t work, there was no sign of Scout noticing the swf file running. After a bit of research I found out that you need to enable advanced telemetry in the SWF file to be able to use scout. Since Haxe didn’t seem to have a function for this I looked for an tool to do this. And yes, there was something like it.

SWF Scout Enabler – A way to enable Adobe scout profiling for Haxe flash/swf exports

This is it’s home:

https://github.com/renaun/ActionScriptExamples/tree/master/SWFScoutEnabler

The link points to the git repository of the full source of the Adobe Air application. Compile it and use it.

SWF Scout Enable – Compiled EXE version for people that don’t want to compile themselves

Or if you are “too lazy” for compiling, you can also download a .air file that was created by the author of SWFScoutEnabler:

http://renaun.com/air/SWFScoutEnabler.air

The link is mentioned in the read me of the Source Repository in case you wonder if you should trust the binary.

Android version of Haxe/OpenFL app not showing the icon after integrating Nuggeta

After integrating Nuggeta into a game it suddenly stopped having an icon. I’ve been verifying that the icons were existing, entered into the projects xml file and also that they were exported to the bin/android/res folder.

Everything was correct, but the icon still was the wrong one.

A close look into the file /{project folder}/templates/android/AndroidManifest.xml (part of the Nuggeta sekeleton) finally told me, why:

<application android:label="Fancy Game Title" android:debuggable="false">
</application>

The icon property was missing in the application node, so I added it:

<application android:label="Fancy Game Title" android:icon="@drawable/icon" android:debuggable="false">
</application>

Did a quick clean + build and the icon was working again.

Haxe/OpenFL: Iterating through Dynamic/Object using Reflect API

If you ever wondered how to use Haxes Reflect API to iterate through an Dynamic (Object), this is how.

Haxe example for interating through an Dynamic using Reflect

public function setProperties(properties:Dynamic):Void{
  for (n in Reflect.fields(properties)){
    Reflect.setField(button, n, Reflect.field(properties, n));
  }
}

“button” is a SimpleButton object in this case but the same method also works for Sprites, MovieClips and other DisplayObjects.

Reflect.fields(object)

returns an array with the keys of the Dynamic Object.

Reflect.field(object, variable)

allows to access the values using the keys.

Reflect.setField(target, property, object)

allows to set the values of an object using the keys. The bracket notation from Flash (button[n]=…) will not work.