1 2 3 4 5 6 7 | table tr:nth-child(even) td{ background-color:#FFCCBC !important; } table tr:nth-child(odd) td{ background-color:#FFFFFF !important; } |
Shoeb's musing on code and craft
Monday, March 21, 2016
How to add alternate color to a table
Access HTTP Session in ASP.NET Web API
By default ASP.NET Web API controller methods cannot access HTTP session. To make session available use the following code.
Global.asax
Global.asax
1 2 3 4 | protected void Application_PostAuthorizeRequest() { System.Web.HttpContext.Current.SetSessionStateBehavior(System.Web.SessionState.SessionStateBehavior.Required); } |
Showing the files in a directory using PHP code
Showing the files in a directory using PHP code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php class FileLister { private $files; private $dir; public function index() { $this->dir = 'D:\\wamp\\www\\repo\\phpbackend\\application\\models'; } public function listFiles(){ $this->files = scandir($this->dir); var_dump($this->files); echo "<br /><br />"; } } ?> |
GPS tracking code in Android
First I have a class called GPSTracker that handles all the functionality related to location tracking.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | package com.example.gpstracking; import android.app.AlertDialog; import android.app.Service; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.os.IBinder; import android.provider.Settings; import android.util.Log; public class GPSTracker extends Service implements LocationListener { private final Context mContext; // flag for GPS status boolean isGPSEnabled = false; // flag for network status boolean isNetworkEnabled = false; // flag for GPS status boolean canGetLocation = false; Location location; // location double latitude; // latitude double longitude; // longitude // The minimum distance to change Updates in meters private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters // The minimum time between updates in milliseconds private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute // Declaring a Location Manager protected LocationManager locationManager; public GPSTracker(Context context) { this.mContext = context; getLocation(); } public Location getLocation() { try { locationManager = (LocationManager) mContext .getSystemService(LOCATION_SERVICE); // getting GPS status isGPSEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); // getting network status isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { // no network provider is enabled } else { this.canGetLocation = true; if (isNetworkEnabled) { locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("Network", "Network"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } // if GPS Enabled get lat/long using GPS Services if (isGPSEnabled) { if (location == null) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); Log.d("GPS Enabled", "GPS Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } } } } catch (Exception e) { e.printStackTrace(); } return location; } /** * Stop using GPS listener * Calling this function will stop using GPS in your app * */ public void stopUsingGPS(){ if(locationManager != null){ locationManager.removeUpdates(GPSTracker.this); } } /** * Function to get latitude * */ public double getLatitude(){ if(location != null){ latitude = location.getLatitude(); } // return latitude return latitude; } /** * Function to get longitude * */ public double getLongitude(){ if(location != null){ longitude = location.getLongitude(); } // return longitude return longitude; } /** * Function to check GPS/wifi enabled * @return boolean * */ public boolean canGetLocation() { return this.canGetLocation; } /** * Function to show settings alert dialog * On pressing Settings button will lauch Settings Options * */ public void showSettingsAlert(){ AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext); // Setting Dialog Title alertDialog.setTitle("GPS is settings"); // Setting Dialog Message alertDialog.setMessage("GPS is not enabled. Do you want to go to settings menu?"); // On pressing Settings button alertDialog.setPositiveButton("Settings", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int which) { Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS); mContext.startActivity(intent); } }); // on pressing cancel button alertDialog.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.cancel(); } }); // Showing Alert Message alertDialog.show(); } @Override public void onLocationChanged(Location location) { } @Override public void onProviderDisabled(String provider) { } @Override public void onProviderEnabled(String provider) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public IBinder onBind(Intent arg0) { return null; } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | package com.example.gpstracking; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.Toast; public class AndroidGPSTrackingActivity extends Activity { Button btnShowLocation; // GPSTracker class GPSTracker gps; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnShowLocation = (Button) findViewById(R.id.btnShowLocation); // show location button click event btnShowLocation.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // create class object gps = new GPSTracker(AndroidGPSTrackingActivity.this); // check if GPS enabled if(gps.canGetLocation()){ double latitude = gps.getLatitude(); double longitude = gps.getLongitude(); // \n is for new line Toast.makeText(getApplicationContext(), "Your Location is - \nLat: " + latitude + "\nLong: " + longitude, Toast.LENGTH_LONG).show(); }else{ // can't get location // GPS or Network is not enabled // Ask user to enable GPS/network in settings gps.showSettingsAlert(); } } }); } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/btnShowLocation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Show Location" android:layout_centerVertical="true" android:layout_centerHorizontal="true"/> </RelativeLayout> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.gpstracking" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".AndroidGPSTrackingActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.INTERNET" /> </manifest> |
Using Javascript prototypal inheritance to add an Array search method
Javascript has no classes. Everything is an object in Javascript. Even functions. And objects can inherit other objects.
In this post, I will show how to use this unique inheritance feature of Javascript, aka prototypal inheritance, to customize built in Javascript objects like arrays. Particularly, I will show how to add a custom method to the Javascript Array object so that any array you use in your javascript app can use that method.
Whenever you create a new array in Javascript, it is an object inheriting from the Array object. Our target is to add a search method to the Array object. Wouldn’t it be convenient to be able to search arrays like
var result = myArray.find("Mango"); Well, wouldn’t it?
You bet it will be. But Javascript arrays do not come with a find method. Let us put it into the Array object so that all arrays can use it.
The code has been generalized to work for both complex objects in the target array, as well as simple arrays like an array of strings. If your array has complex objects then obviously you have to pass an extra parameter to the search function telling which property of an object will be searched for a matching value.
The use of the keyword prototype in the function declaration makes this function available to all sub-objects of Array, i.e. all arrays in your Javascript app. In the same way, you could add a variable to Array. And you can put any object before the prototype keyword. That is the beauty of Javascript’s prototypal inheritance; the hierarchy can start from anywhere.
If you have ever worked with ArrayLists or Vectors in C# or Java (these are expandable arrays, for those who do not know), you will have noticed that ArrayList or Vector class comes in with lots and lots of helper methods like toString(), find() for manipulating the arrays. Javascript does not give you so many helper methods built-in. But using prototypal inheritance, you can very easilly add helper methods like these and make your arrays more fun to use.
In this post, I will show how to use this unique inheritance feature of Javascript, aka prototypal inheritance, to customize built in Javascript objects like arrays. Particularly, I will show how to add a custom method to the Javascript Array object so that any array you use in your javascript app can use that method.
Whenever you create a new array in Javascript, it is an object inheriting from the Array object. Our target is to add a search method to the Array object. Wouldn’t it be convenient to be able to search arrays like
var result = myArray.find("Mango"); Well, wouldn’t it?
You bet it will be. But Javascript arrays do not come with a find method. Let us put it into the Array object so that all arrays can use it.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | Array.prototype.find = function(key, value) { var i; if(!key && !value) { return this; //return the whole array since no parameters are passed } for(i = 0; i < this.length; i++) { if(!value) { //if only one parameter is passed, it will be found as key, value will be null value = key; if(this[i] == value) return this[i]; } else { if(this[i][key] == value) return this[i]; } } return null; } |
The use of the keyword prototype in the function declaration makes this function available to all sub-objects of Array, i.e. all arrays in your Javascript app. In the same way, you could add a variable to Array. And you can put any object before the prototype keyword. That is the beauty of Javascript’s prototypal inheritance; the hierarchy can start from anywhere.
If you have ever worked with ArrayLists or Vectors in C# or Java (these are expandable arrays, for those who do not know), you will have noticed that ArrayList or Vector class comes in with lots and lots of helper methods like toString(), find() for manipulating the arrays. Javascript does not give you so many helper methods built-in. But using prototypal inheritance, you can very easilly add helper methods like these and make your arrays more fun to use.
Subscribe to:
Posts (Atom)