Skip to content

Instantly share code, notes, and snippets.

View bjpeterdelacruz's full-sized avatar

BJ Dela Cruz bjpeterdelacruz

View GitHub Profile
@bjpeterdelacruz
bjpeterdelacruz / Main.java
Created July 14, 2023 23:55
This code demonstrates a race condition when the object that is used as a lock is pointing to a new reference.
// MyObject.java: https://gist.github.com/bjpeterdelacruz/b1a5b14f3d222fb30468b6edf4f3ce82
import java.util.stream.IntStream;
public class Main {
public static void main(String[] args) {
Runnable runnableA = MyObject::doSomething;
Runnable runnableB = MyObject::reinitialize;
for (var idx = 0; idx < 1000; idx++) {
var threads = IntStream.range(0, 1000)
@bjpeterdelacruz
bjpeterdelacruz / HowToLogMethod.java
Created June 19, 2019 21:08
How to log a method in Java
public void doSomething(String recordId) {
log.debug("Deficiency list for recordId: {} - START", recordId);
Instant start = Instant.now();
try {
// do something
} finally {
Instant end = Instant.now();
Duration duration = Duration.between(start, end);
log.debug("Deficiency list for recordId: {} - END, millis: {}", recordId, duration.toMillis());
@bjpeterdelacruz
bjpeterdelacruz / amp.js
Created December 14, 2018 23:44
How to remove ampersands and other encoded characters using JavaScript
var input = "A%20&amp;%20B%20Company";
var output = $('<textarea/>').html(unescape(input).trim()).text();
// output = "A & B Company"
@bjpeterdelacruz
bjpeterdelacruz / SecurityUtils.java
Created December 14, 2018 23:01
A method for stripping out HTML code that could cause XSS
package gov.ehawaii.swhv.utils;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import lombok.NonNull;
public final class SecurityUtils {
private final static List<String> MALICIOUS_STRING_LIST = new ArrayList<>();
@bjpeterdelacruz
bjpeterdelacruz / post_office_regex.js
Last active October 27, 2018 02:54
Regular Express for P.O. Box Addresses
/* Credit: https://github.com/EpicVoyage/pobox-regex */
var pos = $(this).val().search(/(?:P(?:ost(?:al)?)?[\W\s]*(?:(?:O(?:ffice)?[\W\s]*)?B(?:ox|in|\b|\d)|o(?:ffice|\b)(?:[\W\s]*\d)|code)|b(?:o*x|i*n)[\W\s\b]*\d)|(?:P+[\W\s]*O+[\W\s]*)/i);
if (pos >= 0) { // P.O. box address was entered, so disable Submit button and display warning message
$("#submit_primary").attr("disabled", true);
if ($("#element_2_warning").length == 0) {
var text = "<div class='alert alert-warning' style='font-size: 12pt' id='element_2_warning'><strong style='color: #FF0000'>";
text = text + "Street Address only, no P.O. Box.</strong></div>";
$(text).insertBefore($("#li_2"));
}
@bjpeterdelacruz
bjpeterdelacruz / logout.js
Last active May 23, 2018 07:17
How to warn user that their session will timeout soon and how to log them out once it expires
var logoutUrl = "https://test-swhv.ehawaii.gov/swhv-wikiflow/logout.php";
var refreshUrl = "https://test-swhv.ehawaii.gov/swhv-wikiflow/refresh.html";
function displayTimeOutWarningMessage() {
var thirtyMinutes = 1000 * 60 * 30;
var fifteenMinutes = thirtyMinutes / 2;
var lastActivity = new Date().getTime();
var checkTimeOut = function() {
var currentTime = new Date().getTime();
if (currentTime >= lastActivity + fifteenMinutes) {
@bjpeterdelacruz
bjpeterdelacruz / date_range.sql
Created May 8, 2018 20:46
Find data for one day only in MySQL
-- Find data for May 8, 2018 only.
-- WRONG
SELECT * FROM inbox WHERE datetime >= date('2018-05-08') and datetime < date('2018-05-08');
-- Correct
SELECT * FROM inbox WHERE datetime >= date('2018-05-08') and datetime < date('2018-05-08') + interval 1 day;
@bjpeterdelacruz
bjpeterdelacruz / drop_table.sql
Created April 26, 2018 00:02
How to generate DROP TABLE statements for tables that begin with a certain prefix
-- Generate DROP TABLE statements for tables that begin with "ap_form_"
SELECT CONCAT('DROP TABLE `', TABLE_NAME, '`;') AS queries
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'ap_form_%'
-- Sample output:
-- DROP TABLE `ap_form_10792`;
-- DROP TABLE `ap_form_10792_review`;
-- DROP TABLE `ap_form_11763`;
@bjpeterdelacruz
bjpeterdelacruz / WebUtils.java
Last active April 25, 2018 23:31
How to sanitize a URL to prevent open redirection
package com.bjpeter.sampleapp.utils;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import org.apache.commons.lang3.StringUtils;
public WebUtils() {
private WebUtils() {
}
@bjpeterdelacruz
bjpeterdelacruz / WebUtilsTest.java
Last active April 25, 2018 23:33
How to mock static methods using PowerMockito
package com.bjpeter.sampleapp.utils;
import com.bjpeter.sampleapp.services.ServiceLoader;
import com.bjpeter.sampleapp.services.TextService;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;