Monday, January 9, 2023

Composer require runs out of memory. PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted

To get the current memory_limit value, run:
php -r "echo ini_get('memory_limit').PHP_EOL;"


Try increasing the limit in your php.ini file (ex. C:\xampp\php\php.ini for Windows-like systems):
; Use -1 for unlimited or define an explicit value like 2G
memory_limit = -1


Or, you can increase the limit with a command-line argument:
php -d memory_limit=-1 composer.phar require hwi/oauth-bundle php-http/guzzle6-adapter php-http/httplug-bundle

Saturday, January 7, 2023

Laravel - Create new Project from Specific Version - Create Laravel Project for Version 6.X

It's very simple to install specific version if Laravel - for my case it's 6.
I usually use Git Bash to install Laravel. First open Git Bash and navigate to your directory where you want to install Laravel. Then Run below command to check PHP version first, you can check which PHP version is suitable for Laravel 6.X.

Then run command composer create-project --prefer-dist laravel/laravel app2 "6.20.*" will create a project for Laravel version 6.X.
Screenshot available:

WordPress - Add a custom menu item to the WordPress admin menu, for a user with administrator capability - Using WordPress Plugin development

You have to create a plugin first, say create a directory named "plugin1" under "wp-content/plugins" directory. Create a file named "plugin1.php" using following content:
<?php
/**
 * Plugin Name: plugin1
 * Plugin URI: https://www.your-site.com/
 * Description: Test.
 * Version: 1.0.1
 * Author: Plugin Owner Name
 * Author URI: https://www.your-site.com/
 **/

function register_my_custom_menu_page() {
    add_menu_page(
        __( 'Custom Menu Title', 'textdomain' ),
        'Custom Menu',
        'manage_options',
        'plugin1/home.php',
        '',
        plugins_url( 'plugin1/images/home2.png' ),
        6
    );
}
// This command will add menu at left bar of admin panel
add_action( 'admin_menu', 'register_my_custom_menu_page' );

// This will add stylesheet
wp_enqueue_style( 'plugin1.main.css', plugins_url( 'plugin1/main.css' ), false, '1.1', 'all');
Create an directory inside that directory "images" and put an image which will appear as menu icon in the admin menu panel, my structure is like as:
Go to "http://localhost/plugin-development/wp-admin/plugins.php" to activate your Plugin. Above code will add a left menu with icon to the menubar as below:
Once you click on the menu item, it will take you to the "plugin1/home.php" page which will looks like below:

Saturday, December 31, 2022

How to export some rows of a MySQL table using WHERE clause - Selectively dumping data with mysqldump feature - MySQL export few rows from selected table as SQL file

How to export some rows of a MySQL table with where clause?
I have a MySQL say test and I want to create a importable .sql file for rows where id are between 10 and 100.
The way is to use mysqldump feature of MySQL server.
This is the command which will export few rows (for my case where id>=1 and id<=10) into a file:

c:\xampp\mysql\bin\mysqldump.exe -uroot DatabaseName TableName --where="id>=1 and id<=10" > c:\Users\HP\Downloads\Export.sql
You can also use the –where flag to selectively dump data from more than one table, but obviously the columns specified in the where clause need to be in both tables LIKE

c:\xampp\mysql\bin\mysqldump.exe -uroot DatabaseName TableName1 TableName2 --where="id>=1 and id<=10" > c:\Users\HP\Downloads\Export.sql

MapBox Implementation of Map: How to plot multiple points on MapBox using a for each statement - multiple points with exactly the same location using MapBox

Below is code example of plot multiple points on MapBox:
<div id='map' class="map"></div>
<script type="text/javascript">
    mapboxgl.accessToken = "pk.your-access-token";

    const map = new mapboxgl.Map({
        container: 'map',
        style: 'mapbox://styles/mapbox/streets-v9',
        center: [6.055737, 46.233226],
        zoom: 13,
        scrollZoom: true
    });
    map.on('load', function(){
        console.log('map loaded');
        const locations = [
            [6.055737, 46.233226],
            [6.0510, 46.2278],
            [6.0471, 46.23336],
            [6.0371, 46.23336]
        ];
        locations.forEach(function(coords) {
            new mapboxgl.Marker().setLngLat(coords).addTo(map);
        });
    });
</script>
Output is as:

Friday, December 30, 2022

Free Map Integration - Leaflet.js with OpenStreetMap tiles - Display multiple point locations as map markers - Plot multiple points on Map view - Display multiple point locations as map markers

Here is the documantation https://leafletjs.com/examples/quick-start/
Code snippet (Download full code from here):
<script src="//code.jquery.com/jquery-3.6.1.min.js"></script>
<link rel="stylesheet" href="leaflet.css" />
<script src="leaflet.js"></script>

<!-- https://leafletjs.com -->

<div id="leaflet-js-map"></div>
<div>
    <button id="moveToPoint">Move to specific point</button>
</div>
<script type="text/javascript">
    const map = L.map('leaflet-js-map').setView([46.241226, 6.051737], 14);
    L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
        minZoom: 0,
        maxZoom: 18,
        attribution: 'Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors'
    }).addTo(map);
    const leafletMarkers = L.layerGroup([
        new L.marker([46.233226, 6.055737]),
        new L.marker([46.2278, 6.0510]),
        new L.marker([46.23336, 6.0471])
    ]);
    leafletMarkers.addTo(map);

    var LeafIcon = L.Icon.extend({
        options: {
            shadowUrl: 'images/leaf-shadow.png',
            iconSize:     [38, 95],
            shadowSize:   [50, 64],
            iconAnchor:   [22, 94],
            shadowAnchor: [4, 62],
            popupAnchor:  [-3, -76]
        }
    });
    var greenIcon = new LeafIcon({iconUrl: 'images/leaf-green.png'}),
        redIcon = new LeafIcon({iconUrl: 'images/leaf-red.png'}),
        orangeIcon = new LeafIcon({iconUrl: 'images/leaf-orange.png'});
    L.icon = function (options) {
        return new L.Icon(options);
    };
    L.marker([46.234226, 6.055737], {icon: greenIcon}).addTo(map).bindPopup("I am a green leaf.");
    L.marker([46.237226, 6.052737], {icon: redIcon}).addTo(map).bindPopup("I am a red leaf.");
    L.marker([46.240226, 6.065737], {icon: orangeIcon}).addTo(map).bindPopup("I am an orange leaf.");


    [{T: 46.249226, N: 6.056937, D: '1'}, {T: 46.250226, N: 6.066937, D: '2'}].forEach(function (t) {
        const el = document.createElement('div');
        L.marker([t.T, t.N]).addTo(map).on("click", function () {
            console.log(this);
            var popup = L.popup()
                .setLatLng(this._latlng)
                .setContent('<p>Hello world!<br />This is a nice popup-' + t.D + '</p>')
                .openOn(map);
        })
    });

    $("#moveToPoint").on("click", function () {
        map.flyTo(L.latLng(46.249226, 6.056937), 15);

        const popUps = document.getElementsByClassName('leaflet-popup');
        if (popUps[0]) popUps[0].remove();

        L.popup()
            .setLatLng(L.latLng(46.250226, 6.056937))
            .setContent('<p>Hello world!<br />This is a nice popup-Self</p>')
            .openOn(map);
    });
</script>
<style type="text/css">
    #leaflet-js-map {
        width: 100%;
        height: 500px;
    }
</style>
Output is as below:

Monday, December 26, 2022

Where can I find the MySQL log file in XAMPP - Activate logs in Xampp-Mysql

I use PHP (PDO) to access MySQL in XAMPP. My question is where I can find the MySQL query log, exact query that executed on MySQL server?
You need to run these two queries:

SET GLOBAL general_log = 'ON';

SET GLOBAL general_log_file = 'my_log.log';
First will enable loging (which may be off by default)

and the second select updates the preferred file (by default under C:/xampp/mysql/data/)
NOTE: On windows 8 you may have to run your SQL IDE as ADMINISTRATOR for this commands to get saved.
You can also set this in the config, go to path_to_xampp/mysql/ and edit my.ini (copy from my-default.ini if it does not exists) and add the settings there:
[mysqld]

general_log = 'ON';
general_log_file = 'my_log.log';

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
You can view your query logs like below window:
Step1: You need to install Git Bash
Step2: Open Git Bash terminal and navigate to xampp_install_directory/mysql/data directory
Step3: Run command tail -f my_log.log