bookmark_borderIdeal City

Cloud system micro-serviced using Docker, Python, Golang, Node, Flask, Gin, Express.js, MongoDB

Reflection

Show cheaper products of a target city comparing to your city!

=> City Searcher API Microservice Repo

Run
sh run.sh

output

live demo: http://khaledalam.net:8001


Architecture

GitHub: https://github.com/khaledalam/ideal-city

bookmark_borderAliases Manager

Hi everyone!
I just released the first version of my new tool
(Aliases Manager a GUI app using #Python and #Tkinter)

project on #GitHub : https://lnkd.in/dynSGDm

feel free to give the tool a try and a star if you liked it.

#gui#python3#pip#docker#git#files#string#manipulation#linux#unix#mac#windows#bash#treeview#tk#tcl#geometry#terminal#terminals#kernal#cmd#sh#scripting

bookmark_borderAllocate memory to work as swap space on VMs

When physical RAM is already in use, VM instances use swap space as a short-term replacement for physical RAM.

Contents of RAM that aren’t in active use or that aren’t needed as urgently as other data or instructions can be temporarily paged to a swap file. This frees up RAM for more immediate use.

Resolution

Calculate the swap space size

As a general rule, calculate swap space according to the following:

Amount of physical RAMRecommended swap space
2 GB of RAM or less2x the amount of RAM but never less than 32 MB
More than 2 GB of RAM but less than 32 GB4 GB + (RAM – 2 GB)
32 GB of RAM or more1x the amount of RAM
Note: Swap space should never be less than 32 MB.

In this example dd command, the swap file is 4 GB (128 MB x 32):  

$ sudo dd if=/dev/zero of=/swapfile bs=128M count=32

2.    Update the read and write permissions for the swap file:

$ sudo chmod 600 /swapfile

3.    Set up a Linux swap area:

$ sudo mkswap /swapfile

4.    Make the swap file available for immediate use by adding the swap file to swap space:  

$ sudo swapon /swapfile

5.    Verify that the procedure was successful:

$ sudo swapon -s

6.    Enable the swap file at boot time by editing the /etc/fstab file.

Open the file in the editor:

$ sudo nano /etc/fstab

Add the following new line at the end of the file, save the file, and then exit:

/swapfile swap swap defaults 0 0

Done )

run $ htop and check swp [ ] section.

bookmark_borderAwesome Docker WordPress

Simple and easy containerized WordPress website with docker-compose.

Components used:

  • [image] wordpress:latest
  • [image] mysql:5.7
  • [image] phpmyadmin/phpmyadmin
  • docker
  • docker-compose
  • wget, curl, tar, mysqladmin

Usage

  • $ git clone
  • $ cd awecome-docker-wordpress
  • make sure ports in docker-compose file are opened and not in used
  • make sure no running containers using same ports. delete all containers: $ docker rm $(docker -aq) -f
  • $ sudo ./build.sh
  • Naviagate to:
    website: localhost or 127.0.0.1
    PMA: localhost:5000 or 127.0.0.1:5000

Notes: if you want to use your existing WordPress files remove or comment <<< Download latest wordpress section in build.sh file and put your files in app folder!


GitHub: https://github.com/khaledalam/awesome-docker-wordpress

bookmark_borderReset Root Password in MySQL ^8.*

  1. Add below code to the end of /etc/mysql/my.cnf file.
    [mysqld]
    skip-grant-tables
  2. Restart service:
    sudo systemctl restart mysql
  3. Login into mysql:
    sudo mysql -uroot
  4. Remove root password:
    UPDATE mysql.user SET authentication_string=null WHERE User='root'; FLUSH PRIVILEGES; exit;
  5. Comment below code at the end of /etc/mysql/my.cnf file by add # in front of each line.
    # [mysqld]
    # skip-grant-tables
  6. Restart service:
    sudo systemctl restart mysql
  7. Login into mysql:
    sudo mysql -uroot

Done! 🙂

bookmark_borderSimple System With GraphGL, Reactjs, PHP

simple system with GraphQL, Reactjs, PHP

Tools used: PHP v7.3^ , Symfony 4.4^ , React 16^ , VPS, SQL , Docker , overblog/GraphQLBundle

Preview:

as gif – video

note: this is my first time to use GraphQL & Reactjs

GraphiQL:

Example Query:

query {
buyer(id: 20){
id,
name,
authToken
},
products{
id,
name
},
buyers{
name
}
}

Example Mutation: 
Note: entered buyerID and productsIDs must be existed to create order!

mutation {
createOrder(buyerID: "20", productsIDs: ["26", "24"]){
id,
buyer{
name
},
products{
name,
id
}
}
}

Install & run:
  • $ git clone git@github.com:khaledalam/simple-system-with-graphql-react-php.git $ cd simple-system-with-graphql-react-php
  • Update DB info in .env file:DATABASE_URL=mysql://USERNAME:PASSWORD@127.0.0.1:PORT/DB_NAME
  • $ composer install # press (a) to accept all recipes $ yarn install $ php bin/console doctrine:database:create $ php bin/console doctrine:schema:update --force -n $ php bin/console doctrine:fixtures:load -n # add dummy buyers&products
  • $ php bin/console server:start
Assumptions:
  • I assume order can contain multi-products instead of a single product.
  • I assume we can use any ready jwt sandbox app (ex. example)
    • host jwt sandbox on any server
    • inject it throw register, login and retrieving buyer’s orders processes via HTTPexample: – curl -H “Authorization: jwt+[TOKEN]” http://jwt_server/getBuyerIdOfThisToken – compare returnedId with current buyer id – if equal then fetch all current buyer’s orders
  • I assume all current urls available only for admins
  • I assume validations are very basic annotation constraints
  • I assume we use symfony environment (ex. this docker-symfony)
  • I assume more improvements will be done (ex. decrease redundant codes, reducing repetition logic)
  • I assume using another toolkit that supports editing HTTP headers for graphql instead of playground(since I used symfony not laravel and no stable symfony bundle similar to mll-lab/laravel-graphql-playground)

GitHub: https://github.com/khaledalam/simple-system-with-graphql-react-php

bookmark_borderVideo Generator

Video Generator is a python tool that allows converting a collection of photos from local and online sources to video.

Preview


Reflection

While I was working on some computer vision task related to extracting some information from public surveillance cameras streams, in some stage I wanted to record some videos from a collection of photos URLs so I decided to create this simple script to help with this stage and share it in public as well.

Usage

Install
pip install -r requirements.txt

set source in main.py file

Sources:
- online photos urls        ex. 'http://78.186.19.184:81/record/current.jpg'
- local photos directory    ex. 'local_samples/'

videoGenerator = VideoGenerator(SOURCE_HERE)

Run

python main.py

on GitHub: https://github.com/khaledalam/video-generator

bookmark_borderFirebase Logger

Firebase Logger is a simple firebase PHP logger package to monitor and save the users activities.

Installation

Use composer to install firebase-logger:
composer require khaledalam/firebase-logger

Preview

Usage

example.php

<?php
// PHP 7.1^
//error_reporting(0);

include_once './FirebaseLogger.php';

$serviceFile = __DIR__ . '/serviceAccountKey.json';
$databaseUri = 'https://{EDIT_THIS}.firebaseio.com';

$firebaseLogger = new FirebaseLogger([
    'service_account_key_json' => $serviceFile,
    'database_uri' => $databaseUri,
    'database_realtime_name' => 'Logger',
]);

if ($_POST['search'])
{
    echo "<h2>Log saved!</h2>";
    $data = [
        'action' => 'search action',
        'value' => $_POST['search'],
    ];
    $firebaseLogger->log($data);
}
?>

<center>
    <form action="./example.php" method="post">
        <input type="text" placeholder="search text" name="search">
        <input type="submit" value="search">
    </form>
</center>

Check the config section in README file and files on GitHub: https://github.com/khaledalam/firebase-logger

Packagist: https://packagist.org/packages/khaledalam/firebase-logger