Skip to content

Instantly share code, notes, and snippets.

View vyspiansky's full-sized avatar

Ihor Vyspiansky vyspiansky

View GitHub Profile
@vyspiansky
vyspiansky / response_403_in_controller.php
Created April 18, 2024 13:08
Drupal: return a 403 response from a controller
<?php
namespace Drupal\your_module\Controller;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
class YourController {
public function yourPage() {
// Some logic here...
@vyspiansky
vyspiansky / timezone-for-ukraine-in-php-8.md
Created April 12, 2024 07:05
Get a timezone for Ukraine in PHP 8+

To retrieve a timezone for Ukraine in PHP 8+

php -r "var_export(DateTimeZone::listIdentifiers(DateTimeZone::PER_COUNTRY, 'UA'));"

Possible output:

array (
@vyspiansky
vyspiansky / simple-unsubscribe-successful-template.html
Created April 11, 2024 19:55
Unsubscribe successful HTML template
<html>
<head>
<title>Unsubscribe successful</title>
</head>
<body>
<h1>Unsubscribe successful</h1>
<p>Your email has been successfully unsubscribed from this list.</p>
</body>
</html>
@vyspiansky
vyspiansky / zip_folder_ignoring_redundant_files_on_mac.md
Last active February 11, 2024 09:36
Archive folder without redundant files using command line on macOS

Archive a folder without redundant files using the command line on macOS.

cd <folder_path>

where <folder_path> — a folder which should be archived.

zip -r .zip . -x "*.git*" -x "*.DS_Store"
@vyspiansky
vyspiansky / group_by_function.ts
Last active October 28, 2023 12:09
TypeScript groupBy function
/**
* Groups an array of objects by object property
*/
const groupBy = <T>(array: T[], key: keyof T): { [key: string]: T[] } => {
return array.reduce((accumulator: { [key: string]: T[] }, currentElement: T) => {
const keyValue = currentElement[key] as unknown as string;
if (keyValue in accumulator) {
accumulator[keyValue].push(currentElement);
} else {
@vyspiansky
vyspiansky / interleave_many_arrays.js
Last active November 21, 2023 08:39
JavaScript: interleave many arrays
// This function is quite flexible because it can handle any number of input arrays and
// doesn't require them to be of equal length. It interleaves as many elements as possible
// from each array, in the order that the arrays (and elements) were provided.
/**
* Interleaves elements of multiple arrays.
* The function takes any number of arrays as arguments.
*/
function interleaveArrays(...args) {
// Find the maximum length among all arrays
@vyspiansky
vyspiansky / debug_jest_tests_in_vs_code.md
Last active November 21, 2023 08:38
Debug Jest Launch Configuration in VS Code
@vyspiansky
vyspiansky / nodejs_start_new_project.md
Last active November 21, 2023 08:40
Start new Node.js project

How to start a new Node.js project:

npx license mit > LICENSE
npx gitignore node
npx covgen YOUR_EMAIL_ADDRESS
npm init -y

Source

@vyspiansky
vyspiansky / terminal_commands.md
Last active November 21, 2023 08:40
Terminal: useful commands

Some Terminal commands

Current user info

whoami

Give me your IP

@vyspiansky
vyspiansky / docker-commands.md
Created February 1, 2023 10:36
Docker commands

Docker

Run command inside container

Run arbitrary commands inside an existing container:

docker ps
docker exec -it <mycontainer> bash