Sunday, June 6, 2021

Edward Lance Lorilla

Edward Lance Lorilla


【ANDROID STUDIO】CRUD Room Data Persistence Library

Posted: 05 Jun 2021 09:01 AM PDT

 package com.example.roomdemo


import androidx.databinding.Bindable
import androidx.databinding.Observable
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.example.roomdemo.db.Subscriber
import com.example.roomdemo.db.SubscriberRepository
import kotlinx.coroutines.launch

class SubscriberViewModel(private val repository: SubscriberRepository) : ViewModel(),Observable {

val subscribers = repository.subscribers
private var isUpdateOrDelete = false
private lateinit var subscriberToUpdateOrDelete : Subscriber
@Bindable
val inputName = MutableLiveData<String>()
@Bindable
val inputEmail = MutableLiveData<String>()
@Bindable
val saveOrUpdateButtonText = MutableLiveData<String>()
@Bindable
val clearAllOrDeleteButtonText = MutableLiveData<String>()

init {
saveOrUpdateButtonText.value = "Save"
clearAllOrDeleteButtonText.value = "Clear All"
}

fun saveOrUpdate() {
if(isUpdateOrDelete) {
subscriberToUpdateOrDelete.name = inputName.value!!
subscriberToUpdateOrDelete.email = inputEmail.value!!
update(subscriberToUpdateOrDelete)
}else {

val name = inputName.value!!
val email = inputEmail.value!!
insert(Subscriber(0, name, email))
inputName.value = null
inputEmail.value = null
}
}

fun clearAllOrDelete() {
if(isUpdateOrDelete) {
delete(subscriberToUpdateOrDelete)
}else {
clearAll()
}
}

fun insert(subscriber: Subscriber)= viewModelScope.launch {
repository.insert(subscriber)
}

fun update(subscriber: Subscriber) = viewModelScope.launch {
repository.update(subscriber)
inputName.value = null
inputEmail.value = null
isUpdateOrDelete = false
saveOrUpdateButtonText.value = "Save"
clearAllOrDeleteButtonText.value = "Clear All"
}

fun delete(subscriber: Subscriber) = viewModelScope.launch {
repository.delete(subscriber)
inputName.value = null
inputEmail.value = null
isUpdateOrDelete = false
saveOrUpdateButtonText.value = "Save"
clearAllOrDeleteButtonText.value = "Clear All"

}

fun clearAll()=viewModelScope.launch {
repository.deleteAll()
}

fun initUpdateAndDelete(subscriber: Subscriber) {
inputName.value = subscriber.name
inputEmail.value = subscriber.email
isUpdateOrDelete = true
subscriberToUpdateOrDelete = subscriber
saveOrUpdateButtonText.value = "Update"
clearAllOrDeleteButtonText.value = "Delete"

}


override fun removeOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {

}

override fun addOnPropertyChangedCallback(callback: Observable.OnPropertyChangedCallback?) {

}
}
package com.example.roomdemo

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Toast
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager
import com.example.roomdemo.databinding.ActivityMainBinding
import com.example.roomdemo.db.Subscriber
import com.example.roomdemo.db.SubscriberDatabase
import com.example.roomdemo.db.SubscriberRepository

class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var subscriberViewModel: SubscriberViewModel

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = DataBindingUtil.setContentView(this,R.layout.activity_main)
val dao = SubscriberDatabase.getInstance(application).subscriberDAO
val repository = SubscriberRepository(dao)
val factory = SubscriberViewModelFactory(repository)
subscriberViewModel = ViewModelProvider(this,factory).get(SubscriberViewModel::class.java)
binding.myViewModel = subscriberViewModel
binding.lifecycleOwner = this
initRecyclerView()

}

private fun initRecyclerView() {

binding.subscriberRecyclerView.layoutManager = LinearLayoutManager(this)
displaySubscribersList()

}

private fun displaySubscribersList() {
subscriberViewModel.subscribers.observe(this, Observer {
binding.subscriberRecyclerView.adapter = MyRecyclerViewAdapter(it, {selecteditem:Subscriber->listItemClicked(selecteditem)})
})

}

private fun listItemClicked(subscriber: Subscriber) {
subscriberViewModel.initUpdateAndDelete(subscriber)
}

}

package com.example.roomdemo

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.databinding.DataBindingUtil
import androidx.recyclerview.widget.RecyclerView
import com.example.roomdemo.databinding.ListItemBinding
import com.example.roomdemo.db.Subscriber

class MyRecyclerViewAdapter(
private val subscribersList: List<Subscriber>,
private val clickListener: (Subscriber) -> Unit
) : RecyclerView.Adapter<MyViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
val layoutInflater = LayoutInflater.from(parent.context)
val binding: ListItemBinding =
DataBindingUtil.inflate(layoutInflater, R.layout.list_item, parent, false)
return MyViewHolder(binding)
}

override fun getItemCount(): Int {
return subscribersList.size
}

override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
holder.bind(subscribersList[position], clickListener)
}

}

class MyViewHolder(val binding: ListItemBinding) : RecyclerView.ViewHolder(binding.root) {

fun bind(subscriber: Subscriber, clickListener: (Subscriber) -> Unit) {
binding.nameTextView.text = subscriber.name
binding.emailTextView.text = subscriber.email
binding.listItemLayout.setOnClickListener{
clickListener(subscriber)
}
}
}
package com.example.roomdemo

import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import com.example.roomdemo.db.SubscriberRepository

class SubscriberViewModelFactory(private val repository: SubscriberRepository) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T {
if (modelClass.isAssignableFrom(SubscriberViewModel::class.java)) {
return SubscriberViewModel(repository) as T
}
throw IllegalArgumentException("Unknown View Model class")
}
}

package com.example.roomdemo.db

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey

@Entity(tableName = "subscriber_data_table")
data class Subscriber (

@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "subscriber_name")
var id : Int,

@ColumnInfo(name = "subscriber_id")
var name : String,

@ColumnInfo(name = "subscriber_email")
var email : String
)

package com.example.roomdemo.db

import androidx.lifecycle.LiveData
import androidx.room.*

@Dao
interface SubscriberDAO {
@Insert
suspend fun insertSubscriber(subscriber: Subscriber): Long

@Update
suspend fun updateSubscriber(subscriber: Subscriber)

@Delete
suspend fun deleteSubscriber(subscriber: Subscriber)

@Query("DELETE FROM subscriber_data_table")
suspend fun deleteAll()

@Query("SELECT * FROM subscriber_data_table")
fun getAllSubscribers(): LiveData<List<Subscriber>>
}

package com.example.roomdemo.db

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase

@Database(entities = [Subscriber::class],version = 1)
abstract class SubscriberDatabase : RoomDatabase() {

abstract val subscriberDAO: SubscriberDAO

companion object {
@Volatile
private var INSTANCE: SubscriberDatabase? = null
fun getInstance(context: Context): SubscriberDatabase {
synchronized(this) {
var instance = INSTANCE
if (instance == null) {
instance = Room.databaseBuilder(
context.applicationContext,
SubscriberDatabase::class.java,
"subscriber_data_database"
).build()
}
return instance
}
}

}
}

package com.example.roomdemo.db

class SubscriberRepository(private val dao : SubscriberDAO) {

val subscribers = dao.getAllSubscribers()

suspend fun insert(subscriber: Subscriber) {
dao.insertSubscriber(subscriber)
}

suspend fun update(subscriber: Subscriber) {
dao.updateSubscriber(subscriber)
}

suspend fun delete(subscriber: Subscriber) {
dao.deleteSubscriber(subscriber)
}

suspend fun deleteAll() {
dao.deleteAll()
}
}


【Visual Studio Visual Csharp】Progress In Status

Posted: 05 Jun 2021 08:58 AM PDT

 using System;

using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms; // make sure that using System.Diagnostics; is included using System.Diagnostics; namespace Template{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { for (int i = 0; i < toolStripProgressBar1.Maximum; i++) { toolStripProgressBar1.Value += 1; if (toolStripProgressBar1.Value == 80) { return; } } } }}

【PYTHON】Read and Write using joblib library

Posted: 05 Jun 2021 08:57 AM PDT

 import joblib

data_dictionary = {'books'12'articles'100'subjects': ['math''programming''data science']}

joblib.dump(value=data_dictionary, filename='readings.job', compress=True)

data = joblib.load(filename='readings.job')
data

%%timeit
joblib.dump(value=data_dictionary, filename='readings.job', compress=True)

%%timeit
import pickle as pk

with open('readings.pk''wb'as f:
  pk.dump(data_dictionary, f)

%%timeit
data = joblib.load(filename='readings.job')

%%timeit
import pickle as pk
with open('readings.pk''rb'as f:
  data = pk.load(f)

【GAMEMAKER】Spiral

Posted: 05 Jun 2021 08:55 AM PDT

 Information about object: obj1

Sprite: spr_obj__1
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
jump to position (window_get_width()/2,window_get_height()/2)
set variable Counter to 0
Step Event:
execute code:

Counter+=1;
if Counter=5 {
obj=instance_create(x+5,y+5,obj2);
obj.center_x = obj1.x;
obj.center_y = obj1.y;
obj.angle = 180;
obj.radius = 5;
obj.angle_step = -5;
Counter=0;
}
if keyboard_check(vk_left) x-=1;
if keyboard_check(vk_right) x+=1;
if keyboard_check(vk_up) y-=1;
if keyboard_check(vk_down) y+=1;

Information about object: obj2
Sprite: spr_obj__2
Solid: false
Visible: true
Depth:
0
Persistent: false
Parent:
Children:
Mask:

No Physics Object

Step Event:
execute code:

angle += angle_step;
x = obj1.x - (radius * cos(angle * 3.14 / 360));
y = obj1.y + (radius * sin(angle * 3.14 / 360));
radius+=0.1
Other Event: Outside Room:
destroy the instance

No comments:

Post a Comment