Wednesday, May 16, 2018

Ionic Framework Theory

src/index.html
- Main Entry point of App, set up script and CSS and bootstrap, start running app
- <ion-app></ion-app>

src/app/app.module.ts - entry point for the app (declaration and imports)

src/app/app.component.ts - root component, first component to load
src/app/app.htmltemplate 


ionic info - view ionic info

cordova plugin rm cordova-plugin-x-socialsharing --force
cordova plugin add cordova-plugin-x-socialsharing@5.3.2
ionic cordova platform add android@6.3.0

Monday, May 7, 2018

ionic framework tutorial

1)  npm install -g ionic cordova (-g is means global install)
2) cd to the folder u wan to create the app
3) ionic start helloworld blank (it will generate a folder and files at the path u cd)
  • template : blank, tutorial
4) cd to helloworld (IonicProject)
5) ionic serve (run your app)

Publish to Android

1) ionic cordova run android --prod --release (cd to IonicProject)
1.1) The file location will at "platforms/andriod/build/output/apk"

*if no work install JAVA 1.8jdk-8u172-windows-x64.exe
at Environment Variable set JAVA_Home to C:\Program Files\Java\jdk1.8.0_172

2) Create Key store
2.1) cd to c:\Program Files\Java\jdk1.8_0172\bin2.2) keytool -genkey -v -keystore C:\KeyStore/appkey.keystore -alias MyKey -keyalg RSA -keysize 2048 -validity 10000
2.3) Ask password and questions

3) Sign the unasigned APK
3.1) cd to c:\Program Files\Java\jdk1.8_0172\bin
3.2) jarsigner -verbose -keystore c:/keystore/appkey.keystore -storepass [keystorepassword] -keypass [keystorepassword] c:/keystore/app-release-unasigned.apk Mykey

4)Zip Align
4.1) cd to c:\users\[user]\appdata\local\andriod\sdk\build-tools\27.03
4.2) zipalign -v 4 c:/KeyStore/app-release-unsigned.apk c:/KeyStore/MyIonic.apk

Wednesday, May 2, 2018

Connect Cloud SQL through local

1) make sure you are connecting to project
2) cd to cloud_sql_proxy.exe folder path
3)cloud_sql_proxy -instances=[isntancename]=tcp:3308

make sure port not resuse.

https://cloud.google.com/sql/docs/mysql/quickstart-proxy-test

Tuesday, May 1, 2018

GCP .NET Core Connect MYSQL

1) Authorization set 0.0.0.0/0  (this will allow everyone to connect, to secure it, use SSL (number 2).
2) SSL Connections (Allow SSL connections only)
3) Create Client Certificate (3 File - Client, Key, Server) pem
4) This 3 Files can put in MYSQL workbrench
5) Infra create pfx, this file will put in VS code and password.
6) Appsetting.json

"Connectionstrings": {
  "ConnectionApp":"Uid=[id];Pwd=[password];Server=[ip];port=3306;Database=[dbName]",
  "SSLCertFile": "[mysql.pfx]",
  "SSLCertPassword": "[sslPassword]"

},

7) Code

public MySqlConnection AppConnection()
{
    var connectionString = new MySqlConnectionStringBuilder(ConnectionApp)
    {
       SslMode = MySqlSslMode.Required,
       CertificateFile = System.IO.Path.Combine(Directory.GetCurrentDirectory(), "SSL", SSLCertFile),
        CertificatePassword = SSLCertPassword,
        AllowUserVariables = true,
    };

    return new MySqlConnection(connectionString.ConnectionString);

}

8)Every Method

using (MySqlConnection conn = CargoTrackConnection())


Monday, April 16, 2018

GCP .Net Core Error Reporting

If use Log, it will log duplicate, so just throw exception, code below is throw exception with response 500 and exception class.

//Startup.cs After this

app.UseGoogleTrace();

app.UseExceptionHandler(
 options =>
 {
     options.Run(
     async context =>
     {

         context.Response.Headers.Add("Access-Control-Allow-Origin", "*"); //Allow Origin
         context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
         context.Response.ContentType = "application/json";
         var ex = context.Features.Get<IExceptionHandlerFeature>();
         if (ex != null)
         {
             var err = JsonConvert.SerializeObject(ex.Error);
             await context.Response.WriteAsync(err).ConfigureAwait(false);
         }
     });
 }
);

//Before this 
app.UseMvc();

----------------

try
{
    return Ok(result);
}
catch (Exception ex)
{
    throw ex;
}

Tuesday, April 3, 2018

JS part 2


//Get From JSON , FIlter , and put in drop down

$.getJSON(
'https://fly.com/stations/file.json', function (list) {

    list = list.filter(function (item) {
        return item.StationType == "A";
    });

    for (var i in list) {
        if (list.hasOwnProperty(i)) {
            optionDes += "<option value='" + list[i].StationCode + "'>" + list[i].StationName + " (" + list[i].StationCode + ")</option>";
        }
    }

    optionDes += "</select>";
    document.getElementById("origin").innerHTML = optionDes;

Tuesday, March 27, 2018

.Net Core MemoryCache


  • IMemoryCache is Sticky Session, store in web server (Route all to the same Server)
  • Distributed Cache is Non-sticky Session, design for web farm.
  • CacheItemPriority.NeverRemove is cache priority

https://docs.microsoft.com/en-us/aspnet/core/performance/caching/memory