About Menelaos Bakopoulos

Mr. Menelaos Bakopoulos is currently pursuing his PhD both at Center for TeleInFrastruktur (CTiF) at Aalborg University (AAU) in Denmark and Athens Information Technology (AIT) in Athens, Greece. He received a Master in Information Technology and Telecommunications Systems from Athens Information Technology and a B.Sc. in Computer Science & Management Information Systems from the American College of Thessaloniki. Since April 2008 he has been a member of the Multimedia, Knowledge, and Web Technologies Group.

Posts by Menelaos Bakopoulos:

Calling Mysql Iteratively and Passing Parameters from Bash Loop

This specific content was written 9 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

Linux and MysqlBelow we see an example of calling a mysql script from a file and passing a param.

sql script

So make a file with the following (or whatever else you wish):

SET @i = 1;
use databaseName;
SET @pID=@i+100;
SET @partnerID=concat('partner',@pID);
select @i, @pID , @partnerID;

Now, this will print out the values of i, pID, and partnerID.
Below that you could include insert statements or whatever else you wish.

Now how do we call this from bash and set the @i param?

bash script

user=root
password=mysqlPass
database=db

for i in {300..400..5}
do
sed -i "1 s/.*/set @i=$i;/" sample.sql
mysql --user="$user" --password="$password" < sample.sql
done

So how does this work?
We use sed to replace the first line completely in sample.sql with a new “set @i=” command containing the i param we want.
We then call mysql and feed the rewritten file.

Another way to do this would be to concatenate the sample.sql contents to the set command, and feed them to mysql in memory.

API-Axle: Tips, Tricks and Gotchas

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

Api-Axle

This is a brief post to help beginners with API-Axle. What is API-Axle? As described on their site:

ApiAxle is a proxy that sits on your network, in front of your API(s) and manages things that you shouldn’t have to, like rate limiting, authentication and analytics. It’s fast, open and easy to configure.

Here are some tips to help out with the initial instructions at:  http://apiaxle.com/docs/try-it-now/ .

Note: myapi in myapi.api.localhost should be replaced by your own api name.

Increase Timeout

The initial timeout (2 seconds) can result in errors because your backend API server takes time to reply to api-axle. In order to increase this you can use the endPointTimeout parameter.

Example (10 seconds):

axle> api "myapi" create endPoint="stream.site.org:80" endPointTimeout=10 
axle> key "1234" create 
axle> api myapi linkkey "1234"

More

VBA: Read localstorage variable from Internet Explorer Object using temporary textfield

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

Here is a toy solution to access localstorage variables if they are not accessible directly.

Imagine we have test HTML webpage with HTML:

<html>
<body>
<script>
// Put the object into storage
localStorage.setItem('testObject', 'testString');

// Retrieve the object from storage
var retrievedObject = localStorage.getItem('testObject');
</script>
</body>
</html>

More

Quickly find all php short-tags (<?= )

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

I found a webapplication running on linux where the previous developer had been using  shortcodes <? instead of the universally enabled <?php ( see http://stackoverflow.com/questions/1386620/php-echo-vs-php-short-tags for more info) .

Unfortunately this caused the php code to not function unless shortcuts are enabled.

More

Toy Example App that downloads Google Play APKs using Java and APKLeecher service

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

In the toy example below everything is done with string manipulation to extract the actual APK URL and proceed with the download.
The following can be improved by using a DOM parser and searching for the specific elements of interest.

More

How to avoid git conflicts when working with a team?

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

A new team member started working on the same project as me the last week.
After checking their first commit, I noticed they mixed refactoring with eclipse auto-formatting. What made this an even worse  transgression was that they have a custom maximum character width defined in their editor.  I am not against aggressively formatting or refactoring code – except when it is related to critical production code.

GIT diff unfortunately cannot handle these kinds of source refactoring changes and lists the whole file as changed. See: http://stackoverflow.com/questions/21897386/git-diff-ignore-all-linefeeds-between-revisions

After reading I came across the following gem on stackoverflow (How to avoid git conflicts when working with a team? from User Christopher) which I quote/steal from.

Ask your team three questions:

  1. Do we enforce whitespace conventions?automatically finalize parameters.
  2. Do we generate textual build artifacts? For example, do we minify js, generate css rules from .sass or .scss files, or build xml configurations on the fly? Do we check them in?[…]

These three things cause the vast majority of our collective conflict pain:

Versioning Pain

More

Displaying base64 image data from DB using PHP

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

This is based on a question from stackoverflow that I answered.

Imagine we store within a database image data as the following:

data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD...

After retrieving the data from MySQL how do we display it?

Convert base64 data to image:

In this case you need to use the header function to tell the browser you will send an image.
Following, you take the $data variable that you set from a MySQL query, and use base64_decode to display.

header("Content-type: image/gif");
$data = "/9j/4AAQSkZJRgABAQEAYABgAAD........";
echo base64_decode($data);

Clients request .php to display image:

In this case you want to encode the image data directly into a PHP generated page you would do the following:

echo '<img src="data:image/gif;base64,' . $data . '" />';

There is a downside to this in that the browser does not cache an image that is used on multiple separate pages (since each page contains the binary data within the HTML document).The second case is bad because the browser does not perform caching if the same image is shown on multiple pages.

References:

 

Retrieve images of chemical structures using Excel VBA

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

The below is from an answer I posted on stackoverflow.

You can retrieve the chemical structure of an image using the following:

Sub Run()
getImage ("iron")
End Sub

Public Function getImage(ByVal name As String) As String
  Dim imgURL As String
  Dim XMLhttp: Set XMLhttp = CreateObject("MSXML2.ServerXMLHTTP")
  XMLhttp.setTimeouts 1000, 1000, 1000, 1000
  imgURL = "http://cactus.nci.nih.gov/chemical/structure/" + name + "/image"

  XMLhttp.Open "GET", imgURL, False
  XMLhttp.send

  If XMLhttp.Status = 200 Then
   'It exists so get the image
    Sheets(1).Shapes.AddPicture imgURL, msoFalse, msoTrue, 100, 100, 250, 250
  Else
    '
  End If
End Function

This can further simplified to simply only use

Sheets(1).Shapes.AddPicture imgURL, msoFalse, msoTrue, 100, 100, 300, 300

Instead of downloading the image the twice, and simply using an error handler to catch when image not found.

Reference:

 

JQuery Calendar and PHP: Handling Inserts

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

1) Getting Current Time in Javascript

The ISO 8601 date format can be utilized to convert the date on the browser side to a format that include timestamp information. Quoting from here:

Note that the “T” appears literally in the string, to indicate the beginning of the time element. Times are expressed in UTC (Coordinated Universal Time), with a special UTC designator (“Z”). Used in ATOM RSS feeds.

function fnISO() {
// Only works in Firefox using ECMAScript 5
var now = new Date().toISOString();
alert(now);
}

Result: 2009-08-06T23:36:31.390Z

More

WordPress Permalink Migration Warning (SEO semi-disaster)

This specific content was written 10 years ago. Please keep this in mind as it may be outdated and not adhering to best-practices.

If you follow those guides about migrating your blog to another webhost using import/export functionally…
You must rebuild your permalinks in the exact same format as the original webhost!

Go to Settings > Permalinks, and click save changes.
Make sure you choose the correct permalink structure.

If you do not, all your indexed pages on search engines (google, etc) will disappear and your site will be re-indexed losing you your traffic.