Skip to content

Instantly share code, notes, and snippets.

View forabi's full-sized avatar
🎯
Focusing

M-Fawaz Orabi forabi

🎯
Focusing
View GitHub Profile

Keybase proof

I hereby claim:

  • I am forabi on github.
  • I am forabi (https://keybase.io/forabi) on keybase.
  • I have a public key ASDGvN6idKxnfVCTRh4nPxlJTKJUBPQkv1z4VUa44CNdkgo

To claim this, I am signing this object:

@forabi
forabi / canvas.ts
Last active December 18, 2019 08:15
Configuring Webpack and TypeScript for relative module imports
// src/store/reducers/workspace/canvas.ts
import { handleActions } from 'utils/store';
/// ...
import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleWrite {
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = "Hello, world!\n"; // الجملة يلي بدنا نكتبها ع المنفذ
static SerialPort serialPort;
static OutputStream outputStream;
import java.io.*;
import java.util.*;
import javax.comm.*;
/* الكلاس بتعتمد واجهة Runnable مشان نقدر نشغلها بـThread لحالها>
/ SerialPortEventListener على ما يبدو جاية من حزمة javax.comm
/ بتخلينا نستمع لأي تغيرات على منفذ تسلسلي،
/ يعني لما بصير أي شي على المنفذ، فينا نعمل أي شي،
/ هي بس شغلتا تخبرنا شو صار. */
public class SimpleRead implements Runnable, SerialPortEventListener {
@forabi
forabi / auto_rtl.js
Last active April 11, 2016 17:50
Fix text direction for RTL articles on Pocket and file previews on GitHub and GitLab
// ==UserScript==
// @name Auto-RTL
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Fixes layout direction (RTL/LTR) for text on various websites
// @author You
// @match https://gitlab.com/*
// @match https://github.com/*
// @match http*://getpocket.com/beta/read/*
// @match http*://getpocket.com/read/*
@forabi
forabi / Webpack 2.0.7-beta vs Rollup
Last active January 28, 2020 08:54
Webpack 2 vs Rollup
❯ rollup --version
rollup version 0.25.3
❯ time rollup -c ./rollup.js
rollup -c ./rollup.js 4.65s user 0.22s system 118% cpu 4.131 total
❯ time webpack
Hash: ebb00bbccd954c114d3c
Version: webpack 2.0.7-beta
Time: 3623ms
@forabi
forabi / pdfcount.sh
Created August 1, 2015 11:29
Get total page count for all PDF files in the current working directory. Requires pdfinfo
#!/bin/bash
num_pages=0;
for file in *.pdf; do
f_pages=$(pdfinfo "$file" 2>/dev/null | grep Pages | cut -d ":" -f 2 | sed -e 's/^[ \t]*//')
if [[ -z $f_pages ]]; then
echo "Error in $file" && exit 1;
fi
num_pages=$(( num_pages + $f_pages ))
done
echo $num_pages;
@forabi
forabi / 99-arabic.conf
Created June 14, 2015 18:20
Substitute Linux default font family for Arabic with Helvetica World. Save as /etc/fonts/conf.d/99-arabic.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- $XDG_CONFIG_HOME/fontconfig/fonts.conf for per-user font configuration -->
<fontconfig>
<match>
<test name="lang" compare="contains">
<string>ar</string>
</test>
<test name="family" compare="not_eq">
<string>monospace</string>
@forabi
forabi / stat.sh
Created September 26, 2014 17:11
Statistics for Node/CoffeeScript projects
#!/bin/bash
function get_file_names {
find -type f |
egrep -v '/(node_modules)|(.git)/' | # Ignore node_modules and .git
egrep -v '^./(tmp|posts|dist)/' | # Ignored dirs
egrep -v '.(swp|ttf|txt|css|woff|eot|svg|png|jpe?g|sublime-.*)$' # Ignored file types
}
function get_loc {
@forabi
forabi / primes.js
Last active August 29, 2015 14:03
ECMAScript 6 implementation of Sieve of Eratosthenes algorithm https://en.wikipedia.org/wiki/Sieve_of_Eratosthenes
'use strict';
function* getPrimes(n) {
let compos = [];
for (let i = 2; i <= n; i++) {
if (compos[i]) continue;
yield i;
for (let j = i * 2; j <= n; j += i) {
compos[j] = true;
}
}