Uncategorized

PHP – detecting new uploaded images and sending an e-mail with attachments

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

Quick example today if a php script that I wanted to detect new uploaded images, and then send an e-mail.
I think it’s pretty self-explanatory so won’t go into details. However, keep in mind that it’s mostly simple PHP (not too object-oriented) and also that I make use of the wp_mail function.

$menPath = "path-to-uploaded-files/*.jpg";    
 $menLast  = file_get_contents('timestampFile.txt');    
 if($menLast === false){
     echo 'it is zero';
     $menLast = 0;
 }
 $menFiles = glob($menPath);
 
 $menFiles = array_filter($menFiles, function ($file) use ($menLast) { 
   
    $mentest = $menLast - filemtime($file);
    return filemtime($file) > $menLast; });
 file_put_contents('timestampFile.txt', time());

 if (count($menFiles) > 0 )
 {
 $menText =     "images uploaded\r\nFound images count:".count($menFiles)       
        ."Current last timestamp recorded:".date('d-m-Y h:i:s', $menLast )."\r\n"
        ."Images found:\r\n";
 <code>foreach ($menFiles as &$file) {     $menText = $menText.date('d-m-Y h:i:s', filemtime($file))."-".basename($file)."\r\n"; }</code>
     wp_mail( "yourEmail@gmail.com", "files-uploaded", $menText ,'',$menFiles);
 }
 ?>

Amazon Workspaces in Full screen – Switching back to host desktop

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

Quick solution for the problem related to amazon workspaces in full-screen mode.
The only way to switch back to the host system, is to exit full screen – but this is a problem since all the application windows are resized and re positioned.

Unfortunately amazon does not have a fix for this from 2014 to 2018 – as far as  I know.
Link: https://forums.aws.amazon.com/thread.jspa?messageID=566726

I usually have word open on my host machine, and since I didn’t want to install visual studio or make a java application.. I decided to make a VBA macro.
The following VBA macro creates for me an Always On Top dialog (even on top of the full-screen dual monitor amazon workspaces).

Clicking the on the dialog causes me host start-menu to pop up, and I can access any of my running host applications or run new ones.

And this works without having to disconnect or leave my full screen mode.

The code follows:

More

Configuring proxychain with viber on linux

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

I wanted to use viber on ubuntu linux but couldn’t connect due to being behind a proxy.
I had to do two things:

  1. Install proxychains and configure my proxy information in the proxychains configuration file.
  2. Run viber using proxychains. Finally make a special sh file to do this.

 

root@mbak1-VirtualBox:~/Desktop# nano /etc/proxychains.conf 

[ProxyList]
# add proxy here ...
# meanwile
# defaults set to "tor"
http xxx.xxx.xx.xx 8012 user password
https xxx.xxx.xx.xx 8012 user password

Created the following SH file to run viber with the proxy:

#!/bin/bash

proxychains /opt/viber/Viber %u

Tips for beginners: How to align text & content with html & css

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

Html-cssQuick Example: How to align text & content in CSS

In this post we show how to vertically align your text even if the text is changing its font size dynmically and also how to

align horizontally content (aka divs – otherwise you can do it with span tags) using the old fashioned floats. At the end you can find 

the code in jsFiddle for further practice.

More

Git: How to merge your branch

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

gitIn this post I will show you four ways to merge your branch with the main branch, which we will call develop, of the project.

1. Merging on develop

git checkout develop

git pull origin develop

git merge yourBranch

This method is the most frequently used. It uses the recursive automatic merging method of Git to merge the changes of your branch upon the main develop branch.

2. Merging with rebase

git checkout yourBranch

git rebase develop

In this method you are applying the develop branch upon yourBranch. If there is a conflict in the process of merging the process stops and you must fix your conflicts manually which may be an advantage some developers. Moreover it does not produce a merge commit message, so it helps to keep the commit history clean.

3. Merging with pull on your branch

git checkout yourBranch

git pull origin yourBranch

git pull origin develop

More

WordPress Revisr Plugin: Connecting with Github

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

Revisr“Revisr is a Git and WordPress database plugin that allows you to keep track of your web projects in version control. Revisr eliminates redundant interfaces in your workflow and allows you to focus on the task at hand.” – Revisr

That sounds well and good. However, configuration required a few steps and below we document them.
It is needed to install git, create certificates, upload them to github, and also set appropriate permissions.

Steps

            1. Temporarily allow login by the www-data account.
              Open /etc/passwd with nano or vi, and replace :usr/sbin/nologin with :/bin/bash
              See: http://programster.blogspot.gr/2014/05/ubuntu-1404-allow-login-as-www-data-user.html


            2. Install git.
              sudo apt-get install git

            3. Create a certificate for www-data user and set permissions.
              a) Go to www directory and change owners:

              ~/# cd /var/www
              /var/www# chown www-data .
              

              b) Generate a certificate:

              sudo -u www-data ssh-keygen -t rsa
              

              You shouldn’t enter a passphrase and you should see the correct key.


            4. Open the generated certificate and copy the text inside:
              root@server:/var/www/# cd .ssh
              root@server:/var/www/.ssh# cat id_rsa.pub
              ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDOL…etc

            5. Go to Github site and upload the certificate.
              A) See step 4 of https://help.github.com/articles/generating-ssh-keys/
              B) Add your specific key to the github website at: https://github.com/settings/ssh


            6. Test the connection to github:
              sudo -u www-data bash
              ssh -T git@github.com

              You should see:

              Hi username! You've successfully authenticated, but GitHub does not # provide shell access.
              Type "Exit" to exit www-data terminal and type "sudo bash" to start root terminal.
              

              Type:

              exit
              sudo bash

            7. Go to the wordpress directory and set the correct permissions. Reference: http://stackoverflow.com/questions/18352682/correct-file-permissions-for-wordpress

              chown www-data:www-data -R *          # Let apache be owner
              find . -type d -exec chmod 755 {} \;  # Change directory permissions rwxr-xr-x
              find . -type f -exec chmod 644 {} \;  # Change file permissions rw-r--r-

            8. Create a github repository and then connect revisr with this:
              Use the notation for SSH remote URL ( do not use https address).
              Example: in Remote URL enter: git@github.com:developerAccount/project.git


            9. Create a github repository inside the wordpress folder (see here for more info):
              A) Go to your folder and execute

              git init

              B) You should now be able to add and commit files using either the command line or the revisr command panel


            10. Check to see that permissions are correct for your wordpress git repository. You can run ls -lqa to check the owner and check within the .git folder as well. The following commands should be sufficient to set correct ownership to www-data:
              chown www-data:www-data -R .[^.]*
              chown www-data:www-data .
              

The following steps should do it. Post your comments or questions below or send me an e-mail.

How to Build a Simple Game using OpenGL in C

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

“OpenGL (Open Graphics Library) is a cross-language, multi-platform applicaion
programming interface for rendering2D and 3D vector graphics. The API is typically used to interact with a graphics processor unit (GPU), to achieve hardware accelarated rendering.”

So OpenGL is an open library that let us a draw graphics. In this post we will show how a rookie can build a OpenGLsimple game with OpenGL in a C environment. Specifically this game will feature a spacecraft and we will design and implement each part of it using the primitive types of  OpenGL . Moreover we will build the environment which includes  space, stars , a sun and some planets with the same way. Then we will introduce the way that we can add an animation movement. Finally we will load an asteroid from an object file that will have an orbit towards our spacecraft and the goal will be to avoid the asteroid. More

Build a Server – Client Application in C that executes concurrently Terminal Commands

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

In this post we will build a server – client application that will get our hands dirty with signals, fork, named pipes and the exec command. This application has a very simple concept:

“Client creates, with a new process, the Server and sends to him terminal commands using as interprocess communication a named pipe (aka fifo pipe)”

Moreover this model must executes terminal commands concurrently and we accomplish that using a signal handler. To be more specific when a client sends through the named pipe a command, the server wakes up because the signal handler  receives the SIGCONT signal and changes the wake up variable from 1 to 0. This wake up variable is being used in the server to keep him in sleep mode and not busy waiting. Let’s see a simple example with just the mechanism of it:
More

Create a Word Auto-Completer in C using the Trie Data Structure

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

So first of all a few words about our basic structure, the trie…

In computer science, a trie, also called digital tree and sometimes radix tree or prefix tree (as they can be searched by prefixes), is an ordered tree data structure that is used to store a dynamic set or associative array where the keys are usually strings. Unlike a binary search tree, no node in the tree stores the key associated with that node; instead, its position in the tree defines the key with which it is associated. All the descendants of a node have a common prefix of the string associated with that node, and the root is associated with the empty string. Values are normally not associated with every node, only with leaves and some inner nodes that correspond to keys of interest.

For example, in our case, our project involves alphabets with every inner node of the trie data structure representing a letter which means that each node has a unique path from the root (can have up to 26 children as the number of the Latin alphabet) that symbolizes a word.

 

In our project, in order to create our fancy auto-completer we will need three structures. Firstly we need the structure of the

inner nodes that store a character that represents the letter of this node, an array of 26 letters that will navigate through the next letter. Moreover to make our program more accurate we will use an array that stores the top leafs (top words) under this inner node and a leaf pointer that is going to show us that the path from the root until this inner node reflects a word. The leaf structure contains the frequency of this word (which is the parent of the leaf) and a pointer to the last letter of the word.

More

Mozilla has disallowed javascript: execution via the address bar

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

If you try running javascript code via the address bar (not not from a bookmark) it no longer works as mozilla has disabled it for 2 years now.

Trying the following:

javascript:alert("hello");

Causes the following error to appear in the error console:

Error: uncaught exception: ReferenceError: alert is not defined

More

if(!cn_cookies_accepted()){ location.href="http://www.google.com"; } alert('test');