Category: Uncategorized

  • AI Code Assistants: From No-Code to Full Control

    AI Code Assistants: From No-Code to Full Control

    AI code assistants are rapidly transforming how we build software, making development accessible to everyone—from complete beginners to seasoned engineers. In 2025, the landscape is rich with tools offering varying degrees of control, collaboration, and production readiness. Here’s a breakdown of the top platforms, their strengths, and how to choose the right assistant for your needs.

    PlatformLevel of ControlIdeal User Type
    LovableBasic controlNon-technical
    Bolt / V0Code tweakingNon-technical
    ReplitFile managementProduct-minded, non-technical
    Tempo / OnlookDesign controlProduct-minded, non-technical
    Windsurf / Trae / CursorFull code controlTechnical

    Replit

    Bridges the gap between no-code and full-code. You can manage files, collaborate in real-time, and deploy instantly. Its conversational AI can generate full-stack apps from a prompt, but you can also dive into the code as needed

    https://replit.com

    Bolt

    Offers a browser-based coding sandbox with AI-powered suggestions, supporting a wide range of frameworks. You can start with templates or customize your tech stack, making it suitable for both beginners and those wanting a bit more control

    https://bolt.new

    V0

    V0 by Vercel is a platform designed to help users ship projects faster. It allows users to input prompts like “Clone a Screenshot” or “Landing Page” to generate project code. V0 also allows users to import designs from Figma. The platform showcases a variety of community-built projects, ranging from landing pages and dashboards to interactive components and games, providing a wide array of examples and starting points for users.

    https://v0.dev

    OnLook

    Onlook is a design tool that allows users to build website interfaces with AI. It enables designers to prompt AI to generate code, adjust layouts, change colors, and modify text, with no setup required. Onlook integrates with existing design systems and offers features such as version control, local code storage, and open-source support.

    https://onlook.com

    Lovable

    Perfect for those who want to build apps without writing any code. Just describe your idea, and Lovable generates a working application, letting you tweak design elements with simple clicks or chat prompts.

    https://lovable.dev

    Tempo Labs

    Focused on visual, design-driven editing. With live previews and AI-powered selectors, you can make real-time UI changes and sync with GitHub for smooth collaboration—ideal for those who want hands-on design control without deep coding

    https://www.tempo.new

    Windsurf / Trae / Cursor

    For developers seeking full code control. Cursor, built on VS Code, offers AI-powered code suggestions, multi-line edits, and deep integration with your codebase. Windsurf goes further, acting as a collaborative coding agent to help break down complex projects and generate multi-file code

  • Free WordPress Backup and Migration Plugins

    Free WordPress Backup and Migration Plugins

    WordPress Migration plugin migrate your WordPress site easily and fast, plugins are the best helper and it can be done with a few easy steps.

    Below is a detailed look at some of the best WordPress backup plugins available.

    Migrate Guru

    Migrate Guru is a popular WordPress backup, security, and migration plugin. One of the key benefits of using Migrate Guru is its simplicity, making it a user-friendly option for anyone, regardless of their technical expertise. Works with any host via FTP.

    https://wordpress.org/plugins/migrate-guru/

    UpdraftPlus

    UpdraftPlus is a WordPress free plugin used for backups, restoration, and migration of WordPress websites. It allows users to schedule automatic backups of their site’s files and database, store them in cloud services and easily restore their site if needed.

    https://wordpress.org/plugins/updraftplus/

    Duplicator

    Duplicator is a wordpress popular backup free plugin. It is often used for migrations designed to simplify the process of migrating, copying, backing up, and cloning your website.

    Easily transfer your site from one host to another or clone your site for development and testing purposes. Duplicator packages all your site’s files, themes, plugins, and database into a single archive, making migration seamless.

    https://wordpress.org/plugins/duplicator/

    BackWPup

    BackWPup is a WordPress backup plugin that allows users to create complete backups of their site. It offers scheduled automatic backups, database optimization, and site restoration features. The Pro version includes additional storage options, encryption, and priority support. BackWPup is designed to help users protect their WordPress sites against data loss due to crashes, hacks, or server failures.

    https://wordpress.org/plugins/backwpup/

    Total Upkeep

    Total Upkeep is a WordPress backup, restoration, and migration free plugin developed by BoldGrid. It allows you to create complete backups of site’s files, databases, and all associated data. Total Upkeep also includes features like fault protection, which detects and prevents failed updates, and site migration tools for moving websites between hosts.

    https://wordpress.org/plugins/boldgrid-backup/


  • How to Install Node.js on AlmaLinux 9

    How to Install Node.js on AlmaLinux 9

    AlmaLinux 9 provide node.js version 16. Other versions are available in AppStream repository.

    To view available node.js versions, run

    dnf module list nodejs

    example

    [root@sokal9 ~]# dnf module list nodejs
    Last metadata expiration check: 0:57:10 ago on Sat 22 Mar 2025 04:25:45 PM UTC.
    AlmaLinux 9 - AppStream
    Name                               Stream                             Profiles                                                             Summary                                      
    nodejs                             18                                 common [d], development, minimal, s2i                                Javascript runtime                           
    nodejs                             20                                 common [d], development, minimal, s2i                                Javascript runtime                           
    nodejs                             22 [e]                             common [d] [i], development, minimal, s2i                            Javascript runtime                           
    
    Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
    [root@sokal9 ~]# 

    To install node.js 22, run

    dnf module install nodejs:22/common

    If you need to install another version, you need to reset the installed module first

    dnf module reset nodejs:22/common

    Install another version of node.js

    dnf module install nodejs:20/common

    See Node.js

  • traceroute

    traceroute

    Traceroute is a network diagnostic tool that provides insights into how data packets travel across a network. Whether you’re troubleshooting network issues or exploring the internet’s infrastructure, traceroute can help you map the journey of data packets from source to destination.

    Traceroute is a command-line utility that traces the path data packets take across a network. It identifies each intermediate device (or “hop”) between your computer and the destination server, providing information about latency and routing.

    On Ubuntu/Debian, you can install traceroute with the command:

    apt install traceroute -y

    Usage:

    traceroute IP or HostName

    example

    root@vps-535faf74:~# traceroute serverok.in
    traceroute to serverok.in (172.67.133.148), 30 hops max, 60 byte packets
     1  _gateway (15.204.204.1)  0.091 ms  0.080 ms  0.035 ms
     2  192.168.250.254 (192.168.250.254)  0.073 ms  0.045 ms  0.034 ms
     3  10.142.1.126 (10.142.1.126)  0.198 ms  0.212 ms  0.223 ms
     4  10.142.0.40 (10.142.0.40)  0.266 ms 10.142.0.42 (10.142.0.42)  0.248 ms 10.142.0.40 (10.142.0.40)  0.129 ms
     5  10.142.0.6 (10.142.0.6)  0.240 ms 10.142.0.8 (10.142.0.8)  0.297 ms 10.142.0.10 (10.142.0.10)  0.332 ms
     6  10.244.64.238 (10.244.64.238)  0.175 ms 10.244.64.240 (10.244.64.240)  0.195 ms 10.244.64.254 (10.244.64.254)  0.261 ms
     7  * 10.244.120.2 (10.244.120.2)  2.354 ms *
     8  was-cva1-sbb1-nc5.va.us (178.32.135.210)  1.721 ms was-nva1-sbb1-nc5.va.us (178.32.135.154)  1.705 ms was-cva1-sbb1-nc5.va.us (178.32.135.210)  1.532 ms
     9  10.200.2.195 (10.200.2.195)  1.479 ms  1.425 ms  1.421 ms
    10  * * *
    11  173.245.63.99 (173.245.63.99)  2.452 ms 173.245.63.119 (173.245.63.119)  2.617 ms 173.245.63.85 (173.245.63.85)  2.585 ms
    12  172.67.133.148 (172.67.133.148)  1.738 ms  2.036 ms  1.867 ms
    root@vps-535faf74:~# 

    If you need to traceroute to specific port, you can use -p option

    traceroute -T -p 587 smtp.google.com

    -T specifies tcp option, some traceroute implementation do not support it.

    tcptraceroute is another useful command

    apt install tcptraceroute

    To traceroute to a port, use

    tcptraceroute smtp.google.com 25
  • Unable to connect to the MTA on fresh Carbonio install

    Unable to connect to the MTA on fresh Carbonio install

    On a fresh carbonio install, when trying to send email from webmail, it fails.

    On checking the log file /opt/zextras/log/mailbox.log

    tail -f /opt/zextras/log/mailbox.log

    found following error message

    com.zimbra.cs.mailbox.MailServiceException: try again: Unable to connect to the MTA

    The error was because carbonio use invalid port for smtp:

    zextras@mail:~$ zmprov gcf zimbraSmtpPort
    zimbraSmtpPort: 20025
    zextras@mail:~$ 

    To fix it, set SMTP port to 25 with the command:

    zmprov mcf  zimbraSmtpPort 25

    After running the command, you can verify SMTP port is changed with the command:

    zextras@mail:~$ zmprov gcf zimbraSmtpPort
    zimbraSmtpPort: 25
    zextras@mail:~$ 
  • Backup MySQL Database with PHP Script

    Backup MySQL Database with PHP Script

    When you need to backup a MySQL database and no phpMyAdmin or SSH available, you can use a PHP script with exec function.

    <?php
    
    exec("mysqldump --opt -u DB_USER -p'DB_PASSWORD' DB_NAME --result-file=DB_NAME.sql 2>&1", $result, $rval);
    
    if ($rval === 0) {
        echo "Backup successful!";
    } else {
        echo "Backup failed! Verify Database credentials.";
        echo "<pre style='color:red'>";
        foreach ($result as $line) {
            echo $line . "\n";
        }
    }
    

    In the above code, replace DB_USER, DB_PASSWORD and DB_NAME with actual database user, password and database name.

    You can execute this program by going to your website and accessing the PHP file.

    Backup will be saved in current directory with .sql extension.

    Back to MySQL Backup

  • Upgrade MariaDB 10.3 to 10.5 on Ubuntu 20.04

    Upgrade MariaDB 10.3 to 10.5 on Ubuntu 20.04

    Before upgrading, take a backup all databases.

    mysqldump  --routines --triggers --all-databases | gzip -9 > "$(date +%F-%H%m%S)"-mysql-backup.sql.gz

    run these commands

    sudo apt-get install apt-transport-https curl
    sudo mkdir -p /etc/apt/keyrings
    sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'

    Create file

    vi /etc/apt/sources.list.d/mariadb.sources

    and add the following content. If you need repo config for another version of MariaDB or download server from another country, you can do so at

    https://mariadb.org/download/?t=repo-config&d=20.04+%22focal%22&v=10.5&r_m=rackspace

    # MariaDB 10.5 repository list - created 2024-10-10 04:35 UTC
    # https://mariadb.org/download/
    X-Repolib-Name: MariaDB
    Types: deb
    # deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
    # URIs: https://deb.mariadb.org/10.5/ubuntu
    URIs: https://mirror.rackspace.com/mariadb/repo/10.5/ubuntu
    Suites: focal
    Components: main main/debug
    Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp

    To update MariaDB to version 10.5, run

    sudo apt-get update
    sudo apt-get install mariadb-server

    Back to MySQL

  • How to extract wpress file

    How to extract wpress file

    The .wpress file format is generated by the “All-in-One WP Migration” plugin, which is widely used for migrating WordPress sites.

    If you cannot restore a “wpress” file for any reason, you can manually extract the file and restore it manually.

    To extract, we will use wpress-extract package available at

    https://github.com/ofhouse/wpress-extract

    To use it, you need node.js installed on your computer.

    To extract a .wpress file, run

    npx wpress-extract your-site.wpress

    Once extracted, you will get the content of the “wp-content” directory and MySQL backup file. To manually restore, do a fresh WordPress installation, and replace “wp-content” folder with the extracted files.

    Before restoring the database, you need to correct the table prefix. Open the database backup SQL file in a text editor and replace the table prefix with the string you need.

    Delete existing database tables, restore the new SQL file, and update wp-config.php as needed, you may need to update the table prefix in wp-config.php

    Back to WordPress

  • How to change pure-ftpd port

    How to change pure-ftpd port

    pure-ftpd by default listens on port 21. We will change the FTP port from 21 to some other port. This instruction work for RHEL, CentOS, AlmaLinux, Oracle Linux, and RockeyLinux.

    To change FTP port to some other port, edit file

    vi /etc/pure-ftpd/pure-ftpd.conf
    

    Find

    # Bind                         127.0.0.1,21
    

    Add below

    Bind                        FTP_PORT_HERE
    

    Example

    [root@backendz ~]# cat /etc/pure-ftpd/pure-ftpd.conf  | grep -i bind
    # Bind                         127.0.0.1,21
    Bind                        2121 
    [root@backendz ~]# 
    

    This will change FTP port to 2121.

    Restart pure-ftpd with command.

    systemctl start pure-ftpd
    
  • MySQL see all charsets

    To see all charsets available on your MySQL installation, run the command

    select * from information_schema.character_sets; 
    

    maxlen column specifies how many bytes are required to store one character.

    MariaDB [(none)]> select maxlen, character_set_name from information_schema.character_sets where character_set_name in('latin1', 'utf8', 'utf8mb4'); 
    +--------+--------------------+
    | maxlen | character_set_name |
    +--------+--------------------+
    |      1 | latin1             |
    |      3 | utf8               |
    |      4 | utf8mb4            |
    +--------+--------------------+
    3 rows in set (0.000 sec)
    
    MariaDB [(none)]> 
    

    latin1 charset uses 1 byte to store a character. uff8mb4 uses 4 bytes to store a character.

    See MySQL

  • WordPress HyperDB

    WordPress HyperDB

    HyperDB is a WordPress plugin that allows you to use multiple MySQL database servers with large MySQL installations. It is used to WordPress.com to distribute MySQL server load amount multiple MYSQL database servers hosted in different data centers.

    HyperDB supports

    • Read and write servers (replication)
    • Configurable priority for reading and writing
    • Local and remote datacenters
    • Private and public networks
    • Different tables on different databases/hosts
    • Smart post-write master reads
    • Failover for downed host
    • Advanced statistics for profiling
    • WordPress Multisite

    You can find more about the HyperDB plugin at

    https://wordpress.org/plugins/hyperdb/

    How it works

    HyperDB replaces WordPress wpdb class so it can read from multiple MySQL database servers.

    On a default WordPress installation, when a website grows, you need to upgrade the server to a more powerful server, but there is a limit on this as at some point upgrading server becomes costly. What you can do is move MySQL into its own dedicate server. For larger WordPress sites, a single dedicated MySQL server is not enough. In such a case, you can set up MySQL replication. When you set up MySQL replication with read-only nodes, you can only write to “main” MySQL server, all Database reads can be distributed across multiple MySQL read-only replicas. HyperDB checks each MySQL query, detect if it is a read or write/update query. If read, it is sent to one of the read-only MySQL replica servers.

    See WordPress

  • Warning: Use of undefined constant OAUTH_REQENGINE_CURL

    Warning: Use of undefined constant OAUTH_REQENGINE_CURL

    On an Ubuntu server (Ubuntu 20.04.2 LTS) when running a PHP script, I get the following error.

    Warning: Use of undefined constant OAUTH_REQENGINE_CURL - assumed 'OAUTH_REQENGINE_CURL' (this will throw an Error in a future version of PHP
    

    On checking phpinfo, I get

    Ubuntu PHP OAuth

    Request engine support	php_streams
    

    curl is missing in “Request engine support”.

    This is because the default php-oauth package does not support curl. To fix, uninstall php-oauth and install oauth package using pecl.

    Uninstall pcel

    apt install php-oauth -y
    

    install curl dev package

    apt install libcurl4-gnutls-dev
    ln -s /usr/include/x86_64-linux-gnu/curl /usr/include/curl
    

    Install PHP PECL

    apt install php-pear
    

    Install oAuth

    pecl install oauth
    

    Edit php.ini file

    vi /etc/php/7.4/cli/php.ini
    

    Add at end of the file

    extension=oauth.so
    

    You need to do the same for Apache and php-fpm php.ini files located at

    /etc/php/7.4/apache2/php.ini
    /etc/php/7.4/fpm/php.ini
    

    7.4 is for PHP version 7.4. Change this to whatever PHP version you have on your server. After making the change, phpinfo() page shows curl

    ubuntu php oauth

    See php