Tuesday, 21 July 2020
Saturday, 30 November 2019
WiFi 101
wifi 101
- The WiFi radio waves are very similar to the radios used for cell phones and other devices.
They can convert 1s and 0s into radio waves and convert the radio waves back into 1s and 0s. - Wifi can transmit from 2.4 GHz or 5 GHz
- 5G wifi (802.11ac) is the newest standard as of early 2013.
wifi radio waves RSSI
/System/Library/PrivateFrameworks/Apple*.framework/Versions/Current/Resources/airport -I
agrCtlRSSI: -44
agrExtRSSI: 0
agrCtlNoise: -92
agrExtNoise: 0
state: running
op mode: station
lastTxRate: 1170
maxRate: 1300
lastAssocStatus: 0
802.11 auth: open
link auth: wpa2-psk
BSSID: _:_:_:_:_:_
SSID: progessive_energy_5g
MCS: 9
channel: 153,80
Closer I move to router better signal strength I receive.
jshell> var signalToNoiseRatio = -44 - (-92)
signalToNoiseRatio ==> 48
Higher SNR margin values mean clearer signals.
RSSI table
| RSSI | desc |
|---|---|
| -30 dBm | Maximum signal strength (NEAR) |
| -50 dBm | excellent signal strength |
| -60 dBm | reliable signal strength |
| -67 dBm | reliable signal strength |
| -70 dBm | Not a strong signal. Light browsing and email. |
| -80 dBm | Unreliable signal strength, will not suffice for most services. Connecting to the network. |
| -90 dBm | The chances of even connecting are very low at this level. |
Saturday, 17 August 2019
hashmap datastructure with php REPL
php > $user_cache=array("uid1" => "1", "uid2" => "2"); php > echo $user_cache["uid1"]; 1 php > if(!$user_cache["uid3"]) { echo "cache miss";} PHP Notice: Undefined index: uid3 in php shell code on line 1 Notice: Undefined index: uid3 in php shell code on line 1 cache miss
Thursday, 25 July 2019
java async task
.map
jshell> var t1 = CompletableFuture.completedFuture(100)
t1 ==> java.util.concurrent.CompletableFuture@25f38edc[Completed normally]
jshell> var t2 = t1.thenApply(x -> x * 2)
t2 ==> java.util.concurrent.CompletableFuture@1a86f2f1[Completed normally]
jshell> t2.get()
$14 ==> 200
.fmap
jshell> var t1 = CompletableFuture.completedFuture(100)
t1 ==> java.util.concurrent.CompletableFuture@506c589e[Completed normally]
jshell> var t2 = CompletableFuture.completedFuture(200)
t2 ==> java.util.concurrent.CompletableFuture@69d0a921[Completed normally]
jshell> var result = t1.thenCompose($ -> t2)
result ==> java.util.concurrent.CompletableFuture@7aec35a[Completed normally]
jshell> result.get()
$19 ==> 200
javascript equivalent
> var t1 = Promise.resolve(100)
undefined
> var t2 = t1.then(x => x * 2)
undefined
> t2
Promise {
200,
domain:
Domain {
domain: null,
_events: { error: [Function: debugDomainError] },
_eventsCount: 1,
_maxListeners: undefined,
members: [] } }
Monday, 31 December 2018
Extracting URL components in Java
URL, Uniform Resource Locator is composed of
1) protocol
2) domain
3) path
4) query string
4) reference/ anchor
example:
[https]://[www.introverse.com]/[abc/def]?[id=1&id=2]#[index1]
1) protocol
2) domain
3) path
4) query string
4) reference/ anchor
example:
[https]://[www.introverse.com]/[abc/def]?[id=1&id=2]#[index1]
scala> import java.net.URL scala> val url = new URL("https://www.introverse.com/abc/def?id=1&id=2#index1") url: java.net.URL = https://www.introverse.com/abc/def?id=1&id=2#index1 scala> url.getProtocol res1: String = https scala> url.getHost res2: String = www.introverse.com scala> url.getPath res3: String = /abc/def scala> url.getQuery res4: String = id=1&id=2 scala> url.getRef res5: String = index1
Sunday, 16 December 2018
oracle create Entity Relation Diagram(ERD) from existing SQL DDL
Sunday, 9 December 2018
nodejs - call REST api with url encoded parameters
I have a REST API that expects url encoded request params as POST request body. So, API schema looks like
POST /login HTTP/1.1 Host: intro-api.com Accept: */* Content-Type: application/x-www-form-urlencoded Content-Length: xxx
And, If you use
curl request would look like,curl -v --request POST -H "Content-Type: application/x-www-form-urlencoded" intro-api.com/login -d 'username=admin' -d 'password=admin'
Also, since content-type is urlencoded type, request params are in query string format. So
-d "username=admin&password=admin" is valid as well.Now,
I have a frontend(html/js) served by nodejs server which would have to validate user login by calling above REST api. This is what I'm talking in this article.
So, first of all I tried standard nodejs
http library as a http client. But could not make it work for url encoded params. I was getting 408 error, which means it never sent the params?function getUserSession(username, password) { const postData = qs.stringify({ 'username': username, 'password': password }); var options = { protocol: 'https:', host: 'intro.com', port: 443, path: '/login', method: 'POST', headers: { 'Content-Type' : 'application/x-www-form-urlencoded', 'Content-Length': Buffer.byteLength(postData) } }; https.request(options, function(resp){ var response = ''; resp.on('data', function(chunk){ response += chunk; console.log(response) }); }).on("error", function(e){ console.log("Got error: " + e.message); }); }
So I ended up using
request library. which needs to added to package.json (can also be done with npm install request, for more see official documentation).
Next, I will create
auth.js with with a function that expects username and password and call the REST api, and respond the cookie value.var request = require('request'); function getUserSessionId(username, password) { console.log("making login request") request.post({ url: 'https://intro.com/login', form: { username: username, password: password } }).on("response", function(httpResponse) { var session = httpResponse.headers['set-cookie'] console.log("session: " + session) return session }); } var token = getUserSessionId('admin', 'admin')
Now, lets run it on terminal using node runtime (without having run it on http)
node auth.js
That is it to call "a REST api with url encoded params" using nodejs.
Subscribe to:
Posts (Atom)


