На каком направлении нужно учиться, чтобы работать на уровне микроархитектуры, работать с физическими устройствами
Где изучаются сетевые технологии в качестве основного направления?
Можно ли переучиться с одного на другое, как при этом подтверждать свои знания?
Какие перспективы?
На каком направлении нужно учиться, чтобы работать на уровне микроархитектуры, работать с физическими устройствами?
"Фундаментальная информатика и информационные технологии".
"Программной инженерии" и "Прикладной информатики"
Можно ли переучиться с одного на другое
работать только с прикладным уровнем (вэб, мобильная разработка)?
работать на уровне микроархитектуры, работать с физическими устройствами
Где изучаются сетевые технологии в качестве основного направления?
как при этом подтверждать свои знания
data class Human(val age: Int, val sex: Boolean, val height: Float): AutoParcelable
, где-то есть State, в котором хранится список таких моделек:data class State(val humans: List<Human>): AutoParcelable
Observable<State>
. Для того, чтобы отобразить стейт на экране, есть ViewState: data class HumanViewState(val formattedAge: String, val sex: Boolean, val formattedHeight: String)
data class ViewState(humans: List<HumanViewState>, diff: DiffUtil.DiffResult?)
есть маппер, который в бекграунде маппит стейты во вьюстейты, что-то типа:class ViewStateMapper @Inject constructor(stateProvider: StateProvider<State>>) {
fun viewStates(): Observable<ViewState> = stateProvider.states // эмиттит на бекграунд треде
.distinctUntilChanged()
.map {
// State -> ViewState
}.scan {
// вычислить дифф между текущим и предыдущим вьюстейтами
}
}
fragment/controller/etc
fun onViewCreated(....) {
....
mapper.viewStates
.observeOn(mainThreadScheduler)
.subscribe(::render)
.disposeWithView()
}
private fun render(viewState: ViewState) {
recyclerAdapter.items = viewState.humans
viewState.diff?.dispatchUpdatesTo(recyclerAdapter) ?: recyclerAdapter.notifyDatasetChanged()
}
public class Vector3 {
private final int x;
private final int y;
private final int z;
public Vector3(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
public int getZ() {
return z;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Vector3 vector3 = (Vector3) o;
return x == vector3.getX() &&
y == vector3.getY() &&
z == vector3.getZ();
}
@Override
public int hashCode() {
return Objects.hash(x, y, z);
}
}