Labels

Wednesday, July 26, 2017

Livit Fitness Band

  



I recently picked up the Dialog LIVIT Fitness Band, and after putting it through its paces for a couple of weeks, I’m ready to share my thoughts.

If you’re looking for a wearable that won't break the bank, this might be on your radar. I managed to snag mine at a discounted price of just 1,745 LKR, which firmly places it in the ultra-budget category.

The Verdict: Value for Money?
At this price point, expectations should be managed, but I actually think it’s a solid value for what you pay. It handles the basics well enough for someone just starting their fitness journey or looking for a simple notification tracker.

The Trade-off
The biggest "catch" to be aware of is the hardware. The Dialog LIVIT does not include a heartbeat sensor. While many modern wearables treat heart rate monitoring as a standard feature, its absence here is clearly how they’ve managed to keep the cost so low.

Final Thoughts
If you need a low-cost entry into the world of fitness trackers and don't mind missing out on heart rate data, the LIVIT is a decent "bang for your buck" option. However, if health metrics like BPM are a priority for your training, you might want to save up for a slightly higher-tier model.

What do you think? Is a heart rate sensor a dealbreaker for you in 2017, or is the price too good to pass up? Let me know in the comments!

 Features

  1. All day activity tracking (steps,distance,calories burned,active minits,hourly activity).
  2. Notification and calender alerts - (Call,text,facebook,Twitter,WhatApps,skype,Gmail).
  3. Reminder to move (encorage you to take steps every hour).
  4. Auto Sleep Traking (how long well you sleep).
  5. Sync Wirless (Bluetooth 4.0 with Android and Apple devices).
  6. USB Charge.
  7. Easy Touch and Gesture Control (High sensitivity  touch screen).

Support

 IOS : 4S/ 5/ 5S/ 5C/ IPad 3 IOS 8.0 above.
 Android : Android 4.4 above

Friday, July 21, 2017

SQL Server Database Mail Configuration

Setting up automated notifications in SQL Server can be a lifesaver for DBAs and developers alike. Whether it’s alerting you to a failed job or sending out scheduled reports, Database Mail is the go-to feature.In this guide, I’ll walk you through the configuration process step-by-step. Let’s dive in.

Step 1: Access the Database Mail Configuration Wizard.

  • Connect to SQL Server: Launch SQL Server Management Studio (SSMS) and connect to the appropriate server instance.
  • Navigate to Management: In the Object Explorer, expand the Management node.
  • Launch the Wizard: Locate Database Mail, right-click it, and select Configure Database Mail.



Step 02: Navigating the Setup Wizard.

Once you've launched the configuration tool, the Welcome screen will appear. This window provides a brief overview of what the wizard can do, such as managing accounts and profiles.

Simply click the Next button to move forward and start defining your configuration.

 

Step 03: Choosing the Configuration Type.

On the Select Configuration Task screen, you'll see a few different options. Since we are starting from scratch, select the first option: “Set up Database Mail by performing the following tasks.” Once you’ve made that selection, click Next.



Step 04: Enabling the Feature and Creating Your Profile.

If this is a fresh SQL Server installation, the wizard might throw a quick pop-up letting you know that the Database Mail feature is currently disabled. Don't sweat it—this is just a standard security precaution. Simply click Yes to enable it and keep the momentum going.

Once enabled, you’ll be greeted by the New Profile window. Here’s what you need to do:
  • Profile Name: Give your profile a clear, recognizable name (e.g., Admin_Alerts or System_Notifications).
  • Description: While optional, it’s a total pro-move to add a quick note about what this profile is for.
  • Add SMTP Account: Now for the important part—click the Add... button on the right side to start linking your actual email server settings to this profile.



Step 05: Configuring Your SMTP Settings.

This is the "meat" of the configuration where we link SQL Server to your actual email provider. In the New Database Mail Account window, you’ll need to fill in the following details:

1. Account Identity
  • Account Name: Give this specific account a name.
  • Description: Briefly describe what this account does (e.g., "Main Gmail SMTP Account").

2. Outgoing Mail Server (SMTP)
Here’s where you plug in the technical specs:
  • Email Address: The email address you’ll be sending from.
  • Display Name: What you want people to see in their inbox (e.g., SQL-Alert-Service).
  • Reply Email: Optional, but handy if you want replies sent to a specific person.
  • Server Name: The SMTP server address (e.g., smtp.gmail.com or mail.yourdomain.com).
  • Port Number: This depends on your provider, but it’s usually 25, 465, or 587.
3. SMTP Authentication
Most modern mail servers require security, so under the SMTP Authentication section:
  • Select the Basic Authentication radio button.
  • Username: Enter your full email address.
  • Password: Enter your email password (or an "App Password" if you’re using MFA).

Click OK (or Add) to save the configuration.



Step 06

 Then window will appear. it shows your created profile and click Next.

Step 07

 Then another window will , the Configure System Parameters description is shown.


Step 08

Then Click Next. It will show confirmation about your profile , so click Finish.



Step 09

Now SQL server was configured email service and click close .

Step 10
Run following SQL Query

sp_CONFIGURE 'show advanced', 1
GO
RECONFIGURE
GO
sp_CONFIGURE 'Database Mail XPs', 1
GO
RECONFIGURE
GO

How to test SQL Sever mail

Then again right click on Database Mail and select Send Test Email. Then select Database mail profile and enter receiver mail address ,  mail subject.



How to view Database Mail Log

Right click on the Database mail and select View Database Mail Log
 
  

Wednesday, June 14, 2017

T-SQL Trick: How to Find Monday (or Any Day) of the Current Week

Ever needed to filter a report so it only shows data starting from the beginning of the current week? In SQL Server, calculating the date for "this past Monday" is a classic challenge that every dev faces eventually.

While there are many ways to do it, the most efficient method uses a clever combination of DATEDIFF and DATEADD.

The Logic: How It Works

The secret sauce is calculating the number of weeks that have passed since "Day 0" (which is 1900-01-01, a Monday) and then adding those weeks back to that same starting point.

Here is the cleanest way to write it:

-- Using the 'WK' shorthand

SELECT DATEADD(WK, DATEDIFF(WK, 0, GETDATE()), 0) AS MondayOfCurrentWeek;

-- Or using the full 'WEEK' keyword for readability

SELECT DATEADD(WEEK, DATEDIFF(WEEK, 0, GETDATE()), 0) AS MondayOfCurrentWeek;

Both queries will return the exact date of Monday for the current week (e.g., 2026-04-13).


Getting Other Days of the Week

The beauty of this snippet is its flexibility. If you need to find Tuesday, Wednesday, or any other day, you don't need to rewrite the logic—you just need to shift the "anchor" value (the 0 in the formula).

By incrementing the integer, you move the target day forward:

-- Tuesday

SELECT DATEADD(WK, DATEDIFF(WK, 0, GETDATE()), 1) AS Tuesday;

-- Wednesday

SELECT DATEADD(WK, DATEDIFF(WK, 0, GETDATE()), 2) AS Wednesday;

-- Thursday

SELECT DATEADD(WK, DATEDIFF(WK, 0, GETDATE()), 3) AS Thursday;


Why use this instead of DATEPART?

The main advantage here is that this method is deterministic and ignores your server's DATEFIRST settings. Whether your server thinks the week starts on Sunday or Monday, this math always anchors back to that original Monday in 1900, keeping your reports consistent across different environments.

Thursday, May 4, 2017

Measuring Distance with Arduino: A Guide to the HC-SR04 Ultrasonic Sensor



If you’ve ever wanted to give your Arduino projects "vision," the HC-SR04 Ultrasonic Sensor is the perfect place to start. Whether you're building an obstacle-avoiding robot or a digital tape measure, this little module is a staple in the maker community.

Today, I’m going to break down how this sensor works and show you how to get it up and running with your Arduino.

What is the HC-SR04?

The HC-SR04 is an affordable sensor that uses sonar to determine the distance to an object—much like a bat or a dolphin. It has a solid detection range of 2 cm to 400 cm (about 13 feet), which is more than enough for most DIY projects.

How it Works: The "Echo" Principle

The module consists of two main parts: an ultrasonic transmitter and a receiver. Here is the simple physics behind it:
  • The Trigger: The transmitter sends out a high-frequency sound wave (40 kHz).
  • The Bounce: If there is an object in front, the sound wave hits it and bounces back.
  • The Echo: The receiver detects the returning wave and records the time it took for the round trip.
  • By knowing the speed of sound, we can calculate the distance with a bit of simple math!
By knowing the speed of sound, we can calculate the distance with a bit of simple math!

Pros and Cons

Before we start coding, it’s important to know the sensor's limitations:

  1. The Good: Unlike infrared sensors, the HC-SR04 isn't bothered by sunlight or dark-colored objects.
  2. The Bad: It can struggle with soft materials like cloth or wool, which tend to absorb sound waves rather than reflecting them.
  3. The Variable: Keep in mind that temperature and humidity can slightly change the speed of sound, which might affect your accuracy if you're looking for precision.

Hooking it up to Arduino

To get started, you'll need to connect the four pins: VCC (5V), Trig (Trigger), Echo, and GND.


HC-SR04 Ultrasonic sensor Technical Specification

HC-SR04

power supply                  :- 5DC
Quiescent Current           :- 2mA
Working Current               :-15mA
Effect Angle                    :<15 degrees
Distance                           :- 2cm to 400cm
Resolution                        :-0.3cm
Trigger input pulse width :-10us
Ultrasonic Frequency       :-40KHz

Pins


VCC  :- arduino 5v pin
TRIG  :- arduino Digital pin
ECHO :- arduino Digital pin
GND  :- arduino GND pin

The TRIG pin is used to trigger the transmission of the ultrasonic sound pulse, while the ECHO pin is used to listen for the returning signal.

Example

int triggerPin= 8;
int echoPin= 7;
long pulsDuration =0;
long distanceCM =0;
long distanceINC =0;
void setup() {
  // put your setup code here, to run once:
  pinMode(triggerPin,OUTPUT);
  pinMode(echoPin,INPUT);

  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
   digitalWrite(triggerPin,LOW);
   delayMicroseconds(5);
   digitalWrite(triggerPin,HIGH);
   delayMicroseconds(10);
   digitalWrite(triggerPin,LOW);

  pulsDuration =pulseIn(echoPin,HIGH);

  distanceCM = (pulsDuration/2) / 29.1;
  distanceINC = (pulsDuration/2) / 74; 

   Serial.println("CM");
  Serial.println(distanceCM);

   Serial.println("INCH");
  Serial.println(distanceINC);

  delay(1000);

   Serial.println("**********************************************");
}








Thursday, April 20, 2017

How do i program IR Sensor - Arduino


FC-51 IR sensor module is a proximity sensor module. We can identify obstacle in front of sensor. So it has built in IR transmitter and IR receiver. It also has built in potentiometer to adjust distance rage. IR sensor module operate in 2cm-30cm range. FC-51 is compatible with Arduino.

Technical Specification 

1. Operation Voltage - 3.3V - 5V
2. Detection Angle   -35 degrees
3 Active Output level - Outputs Low logic level when obstacle is detected
4.Detection range: 2cm – 30cm (Adjustable using potentiometer)

PIN Out & In

1. VCC - 3.3V-5V DC power input
2. GND -0V Power pin
3. OUT -  Digital Output Pin

Programming 

There are may way to do it. So here i try to use IR sensor with Arduino Uno board. When obstacle is detected by sensor, it will generate LOW output, otherwise output is HIGH.


Example 1 

int irSenRead =7;
int isObstacle = HIGH;
void setup() {

  pinMode(irSenRead ,INPUT);
   Serial.begin(9600);

}

void loop() {

  isObstacle = digitalRead(irSenRead); // // Read IR sensor output
   Serial.println(digitalRead(irSenRead)); // // print the output

  // // isObstacle ==low there is obstacle infront of sensor
  // // using serial monitor we can see this output
  if (isObstacle == LOW) {
    Serial.println("OBSTACLE");
  }
  else
  {
    Serial.println("NO");
  }

  delay(500);
}

Example 2
In below code sample .LED bulb will be on when obstacle detected

int irSenRead =7;
int LED=6;
int isObstacle = HIGH;
int delayRead =100;
void setup() {

  pinMode(irSenRead ,INPUT);
   pinMode(LED ,OUTPUT);
   Serial.begin(9600);

}

void loop() {

  isObstacle = digitalRead(irSenRead);
   Serial.println(digitalRead(irSenRead));

   // isObstacle ==low there is obstacle infront of sensor
  if (isObstacle == LOW) {
    digitalWrite(LED ,HIGH);
  }
  else
  {
    digitalWrite(LED ,LOW);
  }

  delay(delayRead);
}



Monday, April 17, 2017

LEDs blink in a sequence with Arduino [Knight Rider]

e all remember the iconic 80s TV series Knight Rider. One of the most memorable features was the car’s signature sweeping LED flash. For this project, I used an Arduino UNO to recreate that display using 10 LEDs. While there are many ways to program the Arduino microchip, here is the approach I took to get that classic 'scanner' look.

Knight Rider 1

void setup() {

  
     pinMode(2,OUTPUT);
       pinMode(3,OUTPUT);
         pinMode(4,OUTPUT);
           pinMode(5,OUTPUT);
             pinMode(6,OUTPUT);
               pinMode(7,OUTPUT);
                pinMode(8,OUTPUT);
                 pinMode(9,OUTPUT);
                  pinMode(10,OUTPUT);
                   pinMode(11,OUTPUT);
}

void loop() {
  // put your main code here, to run repeatedly:
    for(int i=1;i<12;i=i+1)
 {
  digitalWrite(i,HIGH);
  digitalWrite(i+1,HIGH);
  digitalWrite(i+2,HIGH);
  
  delay(100);
  digitalWrite(i,LOW);
  digitalWrite(i+1,LOW);
  digitalWrite(i+2,LOW);
  
 }

for(int i =12 ;i>=1;i--)
 {
  digitalWrite(i,HIGH);
   digitalWrite(i-1,HIGH);
    digitalWrite(i-2,HIGH);
  delay(100);
  digitalWrite(i,LOW);
   digitalWrite(i-1,LOW);
     digitalWrite(i-2,LOW);
  
 }
}

Knight Rider 2

int pinArray[] = {2, 3, 4, 5, 6, 7,8,9,10,11};

int delayTime = 100;
void setup() {
  // put your setup code here, to run once:
for (int i=0;i<11;i++) {
    pinMode(pinArray[i], OUTPUT);
  }
}

void loop() {
  for (int i=2;i<11;i++) {
   digitalWrite(pinArray[i], HIGH);   
   digitalWrite(pinArray[i+1], HIGH);
   digitalWrite(pinArray[i+2], HIGH);
     delay(delayTime);

    digitalWrite(pinArray[i], LOW);   
   digitalWrite(pinArray[i+1], LOW);
   digitalWrite(pinArray[i+2], LOW);
  }
  for (int i=11;i>=2;i--) { 

  digitalWrite(pinArray[i],HIGH);
  digitalWrite(pinArray[i-1],HIGH);
  digitalWrite(pinArray[i-2],HIGH);
    delay(delayTime);
  digitalWrite(pinArray[i],LOW);
  digitalWrite(pinArray[i-1],LOW);
  digitalWrite(pinArray[i-2],LOW);
  }

}







Friday, August 26, 2016

SYS.SQL_MODULES in T-SQL (Catalog View)

The sys.sql_modules system view is a powerful tool for returning object details within a SQL Server database. It allows developers to easily retrieve the definition and metadata for various objects, including Stored Procedures, Replication-filter procedures, Views, and DML Triggers. Additionally, it covers SQL Scalar Functions, Inline Table-valued Functions, Table-valued Functions, and Rules. Using this view is an essential way to audit or search your codebase programmatically.

Columns


object_id
definition
uses_ansi_nulls
uses_quoted_identifier
is_schema_bound
uses_database_collation
is_recompiled
null_on_null_input
execute_as_principal_id

SELECT  object_id, definition, uses_ansi_nulls, uses_quoted_identifier,
                 is_schema_bound,uses_database_collation, is_recompiled,null_on_null_input,                                      execute_as_principal_id
 FROM   sys.sql_modules