a blog about nothing
Json_error_ctrl_char
I was using mcrypt to encrypt json_encoded data.
On other side, mycrypt was able to decrpyt data but json_decode was not working. It would throw JSON\_ERROR\_CTRL_CHAR error.
However, without mcrypt, json_decode worked flawlessly.
After some trial and error, I found that applying trim function after decrypting data would let me use json_decode without any issues.
Find Large Directories on AIX
I usually run it from under a partition which is running out of space. It can take a while.
du -g | sort -n -r
Error Xcode Select Error Tool Xcodebuild Requires Xcode Active Developer Directory Command Line Tools Instance
Playing with Cordova, I was getting this error when building iOS version:
Error: xcode-select: error: tool 'xcodebuild' requires Xcode,
but active developer directory is a command line tools instance
Even full install of Xcode didn’t fix this error.
The solution was to run following command to use full Xcode instead of command line tools version that I had installed earlier:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
Setup Outgoing Email on Lightsail Ubuntu VPS
I followed instructions here: https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-postfix-as-a-send-only-smtp-server-on-ubuntu-18-04
Everything seemed okay but email were not getting delivered. Logs showed me that smtp connections were timing out:
tail -f /var/log/mail.log
May 3 12:28:10 postfix/smtp[3160]: connect to gmail-smtp-in.l.google.com[172.217.197.27]:25: Connection timed out
May 3 12:28:10 postfix/smtp[3160]: connect to alt1.gmail-smtp-in.l.google.com[2800:3f0:4003:c00::1a]:25: Network is unreachable
May 3 12:28:40 postfix/smtp[3160]: 4984C41A1E: to=<xxxx@gmail.com>, relay=none, delay=3246, delays=3186/0.01/60/0, dsn=4.4.1, status=deferred (connect to alt2.gmail-smtp-in.l.google.com[2a00:1450:400b:c00::1a]:25: Network is unreachable)
However, I could ping any of above ip addresses just fine.
…Files Empty in html form?
Put enctype="multipart/form-data" in your form tag.
hsts Neterr_cert_common_name_invalid
Without full understanding, I had enabled HSTS on amerkhalid.com with option includeSubDomains. I had a subdomain that was used as “Custom Domain” to SmugMug site. After enabling HSTS, these subdomains started to throw NET::ERR_CERT_COMMON_NAME_INVALID.
The fix is of course simple, don’t use includeSubDomains. But that opens up your top level domain to man in middle attacks.
For now, I decided to follow the best practices and leave includeSubDomains enabled. And decided to not use custom domain for my SmugMug site.
TypeError: require.extensions.hasOwnProperty is not a function
While playing with https://github.com/alexa/interactive-adventure-game-tool, I ran into following error:
> interactive-adventure-game-tool@1.0.0 start /Users/amer/alexa/interactive-adventure-game-tool
> node node_modules/gulp/bin/gulp.js
/Users/amer/alexa/interactive-adventure-game-tool/node_modules/require-dir/index.js:97
if (!require.extensions.hasOwnProperty(ext)) {
^
TypeError: require.extensions.hasOwnProperty is not a function
at requireDir (/Users/amer/alexa/interactive-adventure-game-tool/node_modules/require-dir/index.js:97:37)
at Object.<anonymous> (/Users/amer/alexa/interactive-adventure-game-tool/gulpfile.js:1:85)
at Module._compile (module.js:660:30)
at Object.Module._extensions..js (module.js:671:10)
at Module.load (module.js:573:32)
at tryModuleLoad (module.js:513:12)
at Function.Module._load (module.js:505:3)
at Module.require (module.js:604:17)
at require (internal/module.js:11:18)
at Liftoff.handleArguments (/Users/amer/alexa/interactive-adventure-game-tool/node_modules/gulp/bin/gulp.js:116:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! interactive-adventure-game-tool@1.0.0 start: `node node_modules/gulp/bin/gulp.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the interactive-adventure-game-tool@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/amer/.npm/_logs/2018-01-02T05_12_24_832Z-debug.log
The solution was to update require-dir to version 0.3.2 in package.json and run npm install again.
Disable Ping in Linux
echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
…
LeetCode 1664: Ways to Make a Fair Array
I tried to do this all by myself but got stuck, ended up transpiling this solution in PHP.
class Solution {
/**
* @param Integer[] $nums
* @return Integer
*/
function waysToMakeFair($nums) {
$len = count($nums);
$ans = 0;
$leftOdd = 0;
$rightOdd = 0;
$leftEven = 0;
$rightEven = 0;
for ($i=0; $i<$len; $i++) {
if ($i%2 === 0)
$rightEven += $nums[$i];
else
$rightOdd += $nums[$i];
}
for ($i=0; $i<$len; $i++) {
if ($i%2 === 0)
$rightEven -= $nums[$i];
else
$rightOdd -= $nums[$i];
if ($leftEven + $rightOdd === $rightEven + $leftOdd) $ans++;
if ($i%2 === 0)
$leftEven += $nums[$i];
else
$leftOdd += $nums[$i];
}
return $ans;
}
}
LeetCode 20: Valid Parentheses
Here is my solution to this problem in PHP:
/**
* @param {string} s
* @return {boolean}
*/
var isValid = function(s) {
const stack = [];
const brackets = {
'(': ')',
'{': '}',
'[': ']'
};
for (i=0; i<s.length; i++) {
if (s.length === 0) return true;
const c = s[i];
if (brackets[c]) {
stack.push(c);
} else {
const lastBracket = stack.pop();
if (brackets[lastBracket] !== c) return false;
}
}
if (stack.length > 0) return false;
return true;
};