Skip to content

Instantly share code, notes, and snippets.

@v170nix
v170nix / UVGrib2Parser.ts
Created July 17, 2022 18:20
grib2parser
import Grib2class = require("grib2class");
import JpxImage = require("../jpx.min.js");
export class UVGrib2Parser {
private parser
constructor() {
this.parser = new Grib2class({
log: false,
@v170nix
v170nix / tokens.md
Created June 20, 2022 18:45 — forked from zmts/tokens.md
Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Про токены, JSON Web Tokens (JWT), аутентификацию и авторизацию. Token-Based Authentication

Last major update: 25.08.2020

  • Что такое авторизация/аутентификация
  • Где хранить токены
  • Как ставить куки ?
  • Процесс логина
  • Процесс рефреш токенов
  • Кража токенов/Механизм контроля токенов
interface FragmentInjectable
@SuppressLint("Registered")
open class DiActivity : AppCompatActivity(), HasSupportFragmentInjector {
@Inject
internal lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment>
override fun supportFragmentInjector() = fragmentInjector
class AppApplication : Application(), HasActivityInjector {
@Inject
lateinit var activityInjector: DispatchingAndroidInjector<Activity>
override fun onCreate() {
super.onCreate()
...
DaggerAppComponent.builder().application(this).build().inject(this)
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, ...])
interface AppComponent {
@Component.Builder
interface Builder {
@BindsInstance
fun application(context: Context): Builder
fun build(): AppComponent
inline fun <reified T : ViewModel> FragmentActivity.injectViewModel(factory: ViewModelProvider.Factory): T {
return ViewModelProviders.of(this, factory)[T::class.java]
}
inline fun <reified T : ViewModel> Fragment.injectViewModel(factory: ViewModelProvider.Factory): T {
return ViewModelProviders.of(this, factory)[T::class.java]
}
class DemoActivity : AppCompatActivity() {
@Inject
lateinit var viewModelFactory: ViewModelProvider.Factory
lateinit var demoViewModel: DemoViewModel
...
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
...
demoViewModel = ViewModelProviders.of(this, viewModelFactory)[DemoViewModel::class.java]
class ViewModelFactory @Inject constructor(private val viewModels: MutableMap<Class<out ViewModel>, Provider<ViewModel>>) : ViewModelProvider.Factory {
override fun <T : ViewModel> create(modelClass: Class<T>): T {
val viewModelProvider = viewModels[modelClass]
?: throw IllegalArgumentException("model class $modelClass not found")
return viewModelProvider.get() as T
}
}
@Module
abstract class DemoModule {
@Binds
@IntoMap
@ViewModelKey(DemoViewModel::class)
internal abstract fun demoViewModel(viewModel: DemoViewModel): ViewModel
...
@MustBeDocumented
@Target(AnnotationTarget.FUNCTION,
AnnotationTarget.PROPERTY_GETTER,
AnnotationTarget.PROPERTY_SETTER)
@Retention(AnnotationRetention.RUNTIME)
@MapKey
annotation class ViewModelKey(val value: KClass<out ViewModel>)