Wednesday, November 20, 2019

Install Express.js web application framework for Node.js with SockeIO

Express.js is a web application framework for Node.js. FIrst install nodejs and npm.
You can install express.js using npm. The following command will install latest version of express.js globally on your machine so that every Node.js application on your machine can use it. Just run the following command

npm install -g express
Now create a directory named Node1 and navigate to the directory from command prompt (for windows) and run the following command will install nodejs express web framework to the following directory.

First run npm init to initialize a probject.

Then run following command to install express and socketio respectively.

npm install --save express

npm install --save socket.io
We then run npm install to get all the dependencies that are needed to run the app. To test the empty application, run node main.js then navigate your browser to http://127.0.0.1:8081. Main.js is as below:
let app = require('express')();
let http = require('http').Server(app);
let io = require('socket.io')(http);

// Send socket initialization scripts to the client
app.get('/', function(req, res){
    res.send(`
<script src="/socket.io/socket.io.js"></script>
<script>
    let socket = io();
    socket.on('text', (txt) => {
  console.log(txt);
        let textp = document.createElement("h1");
        let t = document.createTextNode(txt);
        textp.appendChild(t);                                            
        document.body.appendChild(textp);
    });
</script>`);
});

// Respond to socket connections with a Hello World text
io.on('connection', (socket) => {
    console.log('User connected');
    io.emit('text', 'Hello, World!');
});

// Run our socket-enabled server
http.listen(8081, function() {
    console.log('listening on *:8081');
});
io.on('connect', onConnect);

function onConnect(socket){

  // sending to the client
  socket.emit('hello', 'can you hear me?', 1, 2, 'abc');

  // sending to all clients except sender
  socket.broadcast.emit('broadcast', 'hello friends!');

  // sending to all clients in 'game' room except sender
  socket.to('game').emit('nice game', "let's play a game");

  // sending to all clients in 'game1' and/or in 'game2' room, except sender
  socket.to('game1').to('game2').emit('nice game', "let's play a game (too)");

  // sending to all clients in 'game' room, including sender
  io.in('game').emit('big-announcement', 'the game will start soon');

  // sending to all clients in namespace 'myNamespace', including sender
  io.of('myNamespace').emit('bigger-announcement', 'the tournament will start soon');

  // sending to a specific room in a specific namespace, including sender
  io.of('myNamespace').to('room').emit('event', 'message');

  // sending to individual socketid (private message)
  io.to(`${socketId}`).emit('hey', 'I just met you');

  // WARNING: `socket.to(socket.id).emit()` will NOT work, as it will send to everyone in the room
  // named `socket.id` but the sender. Please use the classic `socket.emit()` instead.

  // sending with acknowledgement
  socket.emit('question', 'do you think so?', function (answer) {});

  // sending without compression
  socket.compress(false).emit('uncompressed', "that's rough");

  // sending a message that might be dropped if the client is not ready to receive messages
  socket.volatile.emit('maybe', 'do you really need it?');

  // specifying whether the data to send has binary data
  socket.binary(false).emit('what', 'I have no binaries!');

  // sending to all clients on this node (when using multiple nodes)
  io.local.emit('hi', 'my lovely babies');

  // sending to all connected clients
  io.emit('an event sent to all connected clients');

};

Tuesday, November 12, 2019

How to configure virtual host for Laravel on Linux

In this article we will discuss How to configure virtual host for Laravel with Apache server as web server (I installed lampp on my linux machine, which contains apache server installed). It would be very helpful to be able to manage many site on the same host specially when we work with api and specially when want feel like project is running on a real server like my_laravel.com.
At first we need to enable virtual host, below is the command to edit httpd.conf:

sudo gedit /opt/lampp/etc/httpd.conf
Now locate

# Virtual hosts
#Include etc/extra/httpd-vhosts.conf

and comment out the following line:

Include etc/extra/httpd-vhosts.conf
Next step is to put and entry to system host file (execute below command):

sudo gedit /etc/hosts

And add entry 127.0.0.1 my_laravel.com to the end of the file
Next step is to modify file httpd-vhosts.conf, execute below command to modify:

sudo gedit /opt/lampp/etc/extra/httpd-vhosts.conf
<VirtualHost *:80>
    DocumentRoot "/opt/lampp/htdocs"
    ServerName localhost
</VirtualHost>


<VirtualHost my_laravel.com:80>
    DocumentRoot "/home/pritom/codes/laravel_test_success/public"
    ServerName my_laravel.com
    ErrorLog "logs/my_laravel.com-error.log"
    CustomLog "logs/my_laravel.com-access.log" combined
    <Directory "/home/pritom/codes/laravel_test_success/">
        Options Indexes FollowSymLinks MultiViews
            AllowOverride All
            Order allow,deny
            allow from all
            Require all granted
    </Directory>
</VirtualHost>
Finally restart apache server using command
sudo /opt/lampp/lampp restart
and browse my_laravel.com from browser

Saturday, November 2, 2019

My Favorite Sea Foods Tuna Coral Rupchada FlyingFish Crab Lobstar Salmon Lakka Hilsa

TUNA FISH

I love tuna fry, its awesome

CORAL FISH

Coral fish is one of my favorite fish, I will not forget the taste of a BBQ Coral in st martin island

RUPCHADA
FLYING FISH (URUKKU MACH)
SURMAI FISH
HILSA FISH
LOBSTAR
CRAB
SALMON/LAKKA FISH

Saturday, September 14, 2019

Download All Photos From Google Photos | Download Your Data - All Google Data At A Time | Download Google Data As Archive

At first go to Download your data to download/archive all google data as well as google photos
Now you can select which data you want to download, If you don’t want to download data from a product, uncheck the box beside it. If you only want to download some of your data from a product, you may have the option to select a button like List All data included. Then, you can uncheck the box next to data you don’t want to include.
Now Select Next step:

This step is to select download method and some other options as like below image:

When your archive is created by using one of these options, we'll email you a link to its location. Depending on the amount of information in your account, this process could take from a few minutes to a few days. Most people get the link to their archive the same day that they request it.

Friday, June 28, 2019

Crop and Resize Images Using (Mouse Or Touch Capable) With This Simple jQuery Plugin

The Cropper plugin requires a copy of jQuery and it comes with two files: a CSS stylesheet and the JavaScript plugin library. Just add these files to your page and it should be good to go!
Download plugin file from here
var options = {
  aspectRatio: 0,
  preview: '.img-preview',
  ready: function (e) {
    console.log(e.type);
  },
  cropstart: function (e) {
    console.log(e.type, e.detail.action);
  },
  cropmove: function (e) {
    console.log(e.type, e.detail.action);
  },
  cropend: function (e) {
    console.log(e.type, e.detail.action);
  },
  crop: function (e) {
    var data = e.detail;

    console.log(e.type);
    data.x = Math.round(data.x);
    data.y = Math.round(data.y);
    data.height = Math.round(data.height);
    data.width = Math.round(data.width);
    data.rotate = typeof data.rotate !== 'undefined' ? data.rotate : '';
    data.scaleX = typeof data.scaleX !== 'undefined' ? data.scaleX : '';
    data.scaleY = typeof data.scaleY !== 'undefined' ? data.scaleY : '';

    console.log(data);
  },
  zoom: function (e) {
    console.log(e.type, e.detail.ratio);
  }
};
var cropper = new Cropper(image, options);

Monday, June 17, 2019

JavaScript | JQuery | Check if a variable is type of String | Number | Null | Undefined | Array | Object

console.log(Object.prototype.toString.call("This is string"));
console.log(Object.prototype.toString.call(undefined));
console.log(Object.prototype.toString.call(0));
console.log(Object.prototype.toString.call(null));
console.log(Object.prototype.toString.call([]));
console.log(Object.prototype.toString.call({}));
And respective output is as below:
[object String]
[object Undefined]
[object Number]
[object Null]
[object Array]
[object Object]

Saturday, May 25, 2019

jQuery convert PDF to Images Page by Page using pdfjsLib from Mozilla Foundation

First download pdf.js and pdf.workder.js from here or use direct link //mozilla.github.io/pdf.js/build/pdf.js and //mozilla.github.io/pdf.js/build/pdf.worker.js.

<script src="pdf.js"></script>

<title>PDF.js 'Hello, world!' example</title>

<h1>PDF.js 'Hello, world!' example</h1>

<canvas id="the-canvas" style="border:1px solid red;"></canvas>

<script type="text/javascript">
  var url = './sample2.pdf';

  // Loaded via <script> tag, create shortcut to access PDF.js exports.
  var pdfjsLib = window['pdfjs-dist/build/pdf'];

  // The workerSrc property shall be specified.
  pdfjsLib.GlobalWorkerOptions.workerSrc = 'pdf.worker.js';

  // Asynchronous download of PDF
  var loadingTask = pdfjsLib.getDocument(url);
  loadingTask.promise.then(function(pdf) {
    console.log('PDF loaded, total pages = ' + pdf.numPages);

    // Fetch the first page
    var pageNumber = 1;
    pdf.getPage(pageNumber).then(function(page) {
      console.log('Page loaded');

      var scale = 1.5;
      var viewport = page.getViewport({scale: scale});

      // Prepare canvas using PDF page dimensions
      var canvas = document.getElementById('the-canvas');
      var context = canvas.getContext('2d');
      canvas.height = viewport.height;
      canvas.width = viewport.width;

      // Render PDF page into canvas context
      var renderContext = {
        canvasContext: context,
        viewport: viewport
      };
      var renderTask = page.render(renderContext);
      renderTask.promise.then(function () {
        console.log('Page rendered');
      });
    });
  }, function (reason) {
    // PDF loading error
    console.error(reason);
  });
</script>