WordPress Error Establishing A Database Connection

Suddenly this morning around 11AM, 16th August 2021, my awesomegrasp.com is not reachable with error message of error establishing a database connection.

wordpress error establishing a database connection
wordpress error establishing a database connection
  • From cPanel, I check my database is still up and running.
  • Database username and password is correct.
  • My other website is still running (means my hosting is up and running as it i shared hosting).

Error Explanation at wp-admin

I go to wp-admin and the page said one of the tables is broken and to fix it I need to enable below code at wp-configs.php:

wordpress error establishing a database connection - wp allow repair
wordpress error establishing a database connection – wp allow repair

Run Repair Tables

After enabled WP_ALLOW_REPAIR, I run repair tables.

wordpress error establishing a database connection - repair database
wordpress error establishing a database connection – repair database

WordPress List Down The Repair Status

wordpress error establishing a database connection - database repair results
wordpress error establishing a database connection – database repair results

Remove WP_ALLOW_REPAIR

After remove WP_ALLOW_REPAIR, my website is up again.

My worry whether this is possible hacks in my wordpress installation.

Chart.js version 3.5 Examples

I was using Chart.js v2++ for quite some time, and I found it difficult to migrate to version 3.5 as lack of examples.

So I created JS Fiddle to ease the development using Chart.js version 3.5.

I created examples on

  1. Line Chart – Multi Axis
  2. Combo Bar & Line Chart – Multi Axis
  3. Radar Chart

You can easily understand from the JS Fiddle on the chart data and options.

Line Chart – Multi Axis

chart js version 3.5 lines chart multi axis
chart js version 3.5 lines chart multi axis

JSFiddle – Line Chart Multi Axis

Combo Bar & Line Chart – Multi Axis

chart js version 3.5 combo bar line chart - multi axis
chart js version 3.5 combo bar line chart – multi axis

JSFiddle – Combo Bar & Line Chart – Multi Axis

Radar Chart

chart js version 3.5 - radar chart
chart js version 3.5 – radar chart

JSFiddle – Radar Chart

 

 

Python Circular Import Error if Import CSV or Pandas read_csv

I faced issue of circular import error when import CSV or pandas to read cvs file.
My python file name is csv.py

To rectify this is very easy. Ensure your file name is not CSV. If file name is CVS it will cause circular import.

Circular Import when file name is csv.py

python import csv or pandas cause circular import
python import csv or pandas cause circular import

No more circular import error when file name change to csv-reader.py

python import csv or pandas caused circular import if file name is csv
python import csv or pandas caused circular import if file name is csv

NodeJS How To Have Unique Array of Objects

I want to have unique array of objects. So if I add an object, any objects which have same values won’t be added twice.
So I try use Set() data structure.

Adding Object directly to Set()

Output

Conclusion:

As you can see, the Set result is 3. It should be 2. So it doesn’t work

Adding a stringify Object to Set()

Output:

Conclusion:

The Set size is 2 with no duplicate values.

Overall Conclusion

So you can use Set but first stringifiy the objects than convert back the string to object by using JSON.parse() function

You can try thecoding yourself here:
Typescript Playground

Git Command For Initial Push

Useful Git commands for initial push.

In below example I use <https://gitlab.com/lvlaxpt/to-delete.git>. So change this to your Git URL.

Git global setup

Create a new repository

Push an existing folder

Push an existing Git repository

Pull From Existing Repository

Godot MultiPlayer Lobby Tutorial Part 1

I want to do a multiplayer games but it is hard to really understand how it works.

I did refer the official tutorial from Godot here. but I still can’t understand it then I read the code example of multiplayer bomber.

From the multi player bomber, I just extracted when a lobby is created by Host and then a Player joins the lobby.

I did this to simplify the GDScript so I can focus on understanding its inner working.

Besides I add additional print() to see which function is called first and understand their sequence. To know the sequence I added timestamp when the function is called.

Example:

I also rearrange the scripts into different folder to reflect its purposes and change gamestate.gd to GameState.gd

Print at Critical Functions To Detect Functions Calling Sequence

scripts/global/GameState.gd

  • print(“game state – connected_ok()”, ” time stamp: “, OS.get_system_time_msecs())
  • print(“game state – player connected(). ID: “, id, ” time stamp: “, OS.get_system_time_msecs())
  • print(“game state – register player() “, id, ” time stamp: “, OS.get_system_time_msecs())

scripts/lobby/lobby.gd

  • print(“game state – register player() “, id, ” time stamp: “, OS.get_system_time_msecs())
  • print(“lobby – refresh_lobby() Players: “, players, ” time stamp: “, OS.get_system_time_msecs())
  • print(“lobby – _on_connect_success()”, ” time stamp: “, OS.get_system_time_msecs())

A Player Joins As Host @ Server

When a player joins as host, below is the print output.

Launch The Application

  • Run the application via command line (I’m using Linux)
  • Then click Host
Godot Multiplayer Lobby - starting game
Godot Multiplayer Lobby – starting game

Host / Server output:

As you can see, no network signals (network_peer_connected & connected_to_server) are emitted during the network server connections.

Godot Multiplayer Lobby - print output
Godot Multiplayer Lobby – print output

A Player Joins as Client

When a player joins as client, below is the print output.

Godot Multiplayer Lobby - starting as player @ client
Godot Multiplayer Lobby – starting as player @ client

Host / Server output:

Godot Multiplayer Lobby - server print output when a player joins as client
Godot Multiplayer Lobby – server print output when a player joins as client

Player / Client output:

Godot Multiplayer Lobby - print output as player @ client
Godot Multiplayer Lobby – print output as player @ client

Print Output Timestamp Sequence

I rearrange the print out timestamp based on which comes first. Below is the result.

Notes:
The timestamp here differs from screenshots as I did this article in few days, hence the difference in timestamps.

Sequence Diagram

From the “Print Output Timestamp Sequence”, I developed the sequence diagram for better visualization.

Godot Multiplayer Lobby Sequence Diagram
Godot Multiplayer Lobby Sequence Diagram

Key Take Aways

  1. A put “remote” if the function is called by rpc_id() or any functions called via rpc
  2. Functions within the same entity e.g Client or Server are executed first.
  3. Function called via rpc() is executed after all functions within same entity is executed.
  4. Even function triggered via emit signal is executed first before rpc()

Resources:

Sample code

Godot Input Event Example

I want to do a simple board game. Lots of things, I don’t really understand, example the input events. I read the Godot documentation on Input Event but they didn’t provide any project example besides the code.

For beginner, it is not straight forward. So I share the project Input Event example based on the Godot documentation example.

Steps To Do

1. Create Godot Project

2. Create New Input Map

– Click Project -> Project Settings

godot project settings
godot project settings

– Choose Input Map tab

godot - input map
godot – input map

– Find ui_right and choose the right key on your keyboard
– Then click OK
– Do the same with ui_left

3. Test it, by pressing the keys on your game.

– The text will appear on the output screen

godot - output screen
godot – output screen

Add Custom Input Map – Mouse Left Button Click

1. Go to project -> Project Settings

2. Type ui_mouse_left_button_click (you can give any name)

godot - add new input map
godot – add new input map

3. Click Add

4. Add left button event to the Input Map

godot - mouse left button click input map
godot – mouse left button click input map

 

godot - added mouse left button click
godot – added mouse left button click

Godot 3.2.3 Inheritance GDScript Call Parent Function

Lets say you want to have two GDscripts where the ChildScript.gd will call ParentScript.gd.

From there, you want the ChildScript.gd to call its parent function.

Create Class Inheritance

You first create inheritance in GDScript by calling “extends”.

Call Parent Function . Use dot “.” to call parent function

Download Godot Project Example

In this example, when “Press Me” button is clicked. The label will change to “Parent Child” where “Parent” is return value from parent function while child is from child function.

godot-3-2-3 inheritance call parent function
godot-3-2-3 inheritance call parent function

You can download here the project example.

Godot Button Signal Tutorial

I’m still new to games development using Godot engine.

I follow the button signal tutorial on Godot website. I created the project for easy reference for others because at the website they don’t provide the Godot project that you can immediately play.

Full GDScript from the tutorial

Download Godot Button Signal Project

You can download the button signal Godot project here, if you want to run the tutorial.

In case the button signal tutorial is broken link for what soever reasons, I have converted the web page into PDF.

Hope it helps beginner games developer like me.

PHP is not running after upgrade MacOS Big Sur on Apple Macbook Pro M1

Another problem I always face after upgrading MacOS where PHP is not running anymore. I have to google to find solution. Now I decided to write step by step tutorial so easy for my future reference and hopefully can help others who face the same thing.

1) My phpMyAdmin instead of showing login page, it displays its PHP code.

Macos Bigsur upgrade php not running
Macos Bigsur upgrade php not running

2) Uncomment PHP Module

Open httpd.conf

Find php by typing

Remove # to uncomment the PHP module.

remove # from load module php
remove # from load module php

Save the changes by typing

3) Restart Apache

4) Refresh the PHP page

macos big sur php running again after change httpd conf
macos big sur php running again after change httpd conf