Becareful of JavaScript blocking the main thread

I’ve just made a mistake on production site, the client’s website.

I was working on a tracking script, which let client to include into their site.

Read More

How to prevent duplicated join of table in Laravel Query Builder

Laravel Query Builder is an awesome feature, really.

When comes to generate a complicated report, with complicated filter/sort, the code logic can be very confusing.

Read More

The efficient way to debug JS/CSS in production site

Recently I discovered this package, which allows us to run JavaScript & css in any domain.

Read More

docker-compose for Elasticsearch & Kibana

Create a file docker-compose.yml with the following content:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
version: '3'

services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.2.0
container_name: elasticsearch_local
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- discovery.type=single-node
- http.cors.enabled=true
- http.cors.allow-credentials=true
- http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
- http.cors.allow-origin=/https?:\/\/localhost(:[0-9]+)?/
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
networks:
- esnet
kibana:
image: docker.elastic.co/kibana/kibana:7.2.0
container_name: kibana_1
environment:
- "SERVER_NAME=kibana"
- "ELASTICSEARCH_HOSTS=http://elasticsearch:9200"
ports:
- 5601:5601
networks:
- esnet
restart: "unless-stopped"

volumes:
esdata1:
driver: local

networks:
esnet:

Read More

jQuery infinite scroll articles

Quite often, we have seen a lot of news site (e.g. forbes.com),
when you scrolled until end of the article, it will shows another article.

Read More

How to setup Google Optimize server side test with GTM

Recently I come across A/B testing, to see which algorithm is most effective to trigger user clicks.

Here I use Google Optimize, setup via
Google Tag Manager to do the job.

Read More

Setup OpenVPN in AWS for RDS access

When we use AWS, often we will use RDS, for security reason, is better to not to expose to public.

RDS settings

Read More

Laravel auto deployment with GitLab CI/CD

I’ve been heard of continuous integration long ago, thus I decide to give it a try.
I found the official guideline from GitLab itself, and it looks quite complicated.
End up I follow this article.

Read More

window.onbeforeunload trigger ajax request

Initially I was using jQuery.ajax call to send a request to server before user
leave the page.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
window.onbeforeunload = function(evt) {
const endpoint = '/lock/end-timestamp.php';
$.ajax({
url: endpoint,
dataType: 'json',
type: 'post',
async: false, // synchronous request
data: {
_token: $('meta[name="csrf-token"]').attr('content'),
param1: 'data1',
param2: 'data2',
},
});
};

Read More

Use Google Analytics API with Laravel 5

No doubt that Google is very powerful. I’ve been researching for
Google Analytics (GA) API for quite sometime, due to it’s complex documentation
(somehow I think is very hard to find what I need).

Read More