关于在DB中保存日期时间和时区信息有很多问题,但总体水平更多.在这里,我想谈谈一个具体的案例.
系统规格
DB中需要涵盖业务规则
ORDR-13432-Year-Month-Day
).精确计算目前并不重要,重要的是它取决于租户的本地日期时间我们最初的想法
方法1
保存当地租户的日期时间对每个租户来说都不错,但是我们遇到的问题包括:
SELECT * FROM ORDERS WHERE OrderDateTime BETWEEN UTCDateTime1 AND UTCDateTime2
Run Code Online (Sandbox Code Playgroud)这是有问题的,因为OrderDateTime
在这个查询中意味着基于租户的不同时刻.当然,此查询可能包括连接到Tenants
表以获取本地日期时间偏移量,然后将在运行中进行计算OrderDateTime
以进行调整.这是可能的,但不确定这是否是一个好方法呢?
方法2
让我们举一个极端的例子; 让我们说租户比UTC早6个小时,他的当地日期时间是2017-01-01 02:00
.UTC会是2016-12-31 20:00
.此时下达的订单应该获得OrderNumber 'ORDR-13432-2017-1-1'
但是如果保存UTC则会得到ORDR-13432-2016-12-31
.
在这种情况下,在DB中创建Order时,我们应该根据重新计算的租户本地时间获得UTC日期时间,租户偏移和编译OrderNumber,但仍然以UTC格式保存DateTime列.
问题
[UPDATE]
根据Gerard Ashton和Hugo的评论:
如果租户可以改变时区,那么最初的问题就细节而言并不明确,如果政治当局改变时区属性或某个时区的时区会发生什么.当然,这是非常重要的,但它不是这个问题的核心.我们可以在另一个问题中解决这个问题.
为了这个问题,让我们假设租户不会改变位置.该位置的时区属性或时区本身可能会发生变化,这些更改将在系统中与此问题分开处理.
我正在使用android数据绑定库.如果我想让视图可见,我可以写这样的东西:
<TextView
android:id="@+id/label_status"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@{habitListViewModel.message}"
app:visibility="@{habitListViewModel.hasError ? View.VISIBLE : View.GONE}" />
Run Code Online (Sandbox Code Playgroud)
是否有以类似(xml)方式绑定到swipeRefreshLayout的刷新属性的选项?
目前我通过调用setRefreshing(true/false)在代码中设置它,但是希望在xml中使它保持一致.
在SO上有更多类似的问题,但我没有找到他们的答案,所以我开了新的.
我在用:
Android Studio 2.2.3(但与2.2.2相同)Gradle 2.14.1 JRE 1.8.0
我在mac,OS X El Capitan(2.5 GHz,i5,8GB RAM)上使用它.
它在几周前一直很好用,现在它的速度非常缓慢.大多数时候它是"索引/更新索引".
我并不关心构建时间(它需要大约30-40秒,但我可以忍受)与那种使编码几乎不可能的常量索引一样(整体响应性非常差).
我的gradle文件中是否有任何可能导致此问题的内容?
我确实有一些依赖,但应用程序本身相对简单.
build.gradle // app
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
compileSdkVersion 23
buildToolsVersion "23.0.2"
dataBinding {
enabled = true
}
defaultConfig {
applicationId "com.example.myproduct"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.2.+'
compile 'com.android.support:support-v4:23.2.+'
compile …
Run Code Online (Sandbox Code Playgroud) 这是一个设计/最佳实践问题..
我是Android开发的新手,基本上是Web /移动解决方案的新手.
所以,我的问题是 - 在组织从远程服务器获取数据的android应用程序结构时,最佳做法是什么?
应该请求服务器进入一个与服务器进行通信的类(获取和发布请求),还是应该将我的请求看作数据源,这意味着每个数据类都为自己管理它?
或者我应该有更多抽象级别 - 一个级别用于获取数据,另一个级别用于使用某些接口但不知道源数据来自哪个?
我很好奇Android开发人员如何处理这些设计问题......
android design-patterns data-access-layer remote-access application-design
Android,WPF以及我一直在使用的大多数平台都可以在单个文件中重用和"集中"ui资源,如颜色和样式.
在android中它可以这样做:
在colors.xml文件中:
<color name="secondary_text_color">#ffcc67</color>
Run Code Online (Sandbox Code Playgroud)
在任何视图中:
<TextView text="some text" textColor="@colors/secondary_text_color" />
Run Code Online (Sandbox Code Playgroud)
iOS中有类似的东西吗?
我不是想在iOS中复制android,但我正在努力理解应该遵循的ui重用模式(如果有的话).
我遇到的唯一的事情是在代码中定义主题,并在代码背后重用它,这是正确的方法吗?
我试图了解Viola Jones的方法,而且我大部分时间都明白了.
它使用简单的Haar类似功能提升为强分类器,并组织成层/级联,以实现更好的性能(不打扰明显的"非对象"区域).
我想我理解积分图像,我理解这些特征的计算值.
我唯一想不通的是算法如何处理面部大小的变化.
据我所知,他们使用24x24子窗口在图像上滑动,并在其中算法通过分类器并试图弄清楚它上面是否有面/对象.
而我的问题是 - 如果一张脸是10x10尺寸,还是其他100x100呢?那么会发生什么?
而且我很想知道前两个功能是什么(在级联的第一层),它们是怎样的(记住这两个功能,根据Viola和Jones,几乎不会错过任何一张脸,并将消除60%的错误)?怎么样??
并且,如何构建这些功能以处理图像中不同面部大小的这些统计信息?
我错过了什么,或者我认为这一切都错了?
如果我不够清楚,我会试着更好地解释我的困惑.
opencv image-processing computer-vision face-detection viola-jones
从包裹中写入/读取时,我无法弄清楚如何使用多态性。我知道我需要在基类以及所有派生类中实现 Parcelable(在子类具有我想写入包裹的附加属性的情况下)。我不明白并且我不知道它是否可能是 - 如何从 Parcelable 读取子类,即,我怎么知道我正在从 Parcel 读取什么样的子类。我可以做一些 hack,比如在包中写入一些指示符,它会告诉我要使用什么类加载器,但我认为会有一些更优雅的方式,否则就没有太多的多态性使用。
为了说明我的问题,假设我有这样的课程:
形状类
public class Shape implements Parcelable {
public float area;
public Shape() {
}
public Shape(Parcel in) {
area = in.readFloat();
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeFloat(area);
}
//CREATOR etc..
}
Run Code Online (Sandbox Code Playgroud)
矩形形状类
public class RectangleShape extends Shape {
float a;
float b;
public RectangleShape(Parcel in) {
super(in);
a = in.readFloat();
b = in.readFloat();
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeFloat(area);
dest.writeFloat(a);
dest.writeFloat(b);
}
//CREATOR etc.. …
Run Code Online (Sandbox Code Playgroud) For example, let's say that we have a product catalog view with an option to add product to a cart. Each time when user clicks add to cart, a viewModel method addToCart is called, that could look like this:
//inside viewModel
fun addToCart(item:Item): LiveData<Result> = liveData {
val result = repository.addToCart(item) // loadUser is a suspend function.
emit(result)
}
//inside view
addButton.onClickListener = {
viewModel.addToCart(selectedItem).observe (viewLifecycleOwner, Observer () {
result -> //show result
}
}
Run Code Online (Sandbox Code Playgroud)
What happens after adding for …
是否可以在每个片段都有自己的工具栏的单个活动应用程序中使用 Android 导航组件/图形?
此外,容器活动有一个导航抽屉,需要设置工具栏和导航控制器,但在活动创建时我还没有工具栏。
我正在使用此代码(在 onCreate 中调用)
private fun setupNavigation() {
// val toolbar = findViewById<Toolbar>(R.id.toolbar);
// setSupportActionBar(toolbar);
// supportActionBar!!.setDisplayHomeAsUpEnabled(true);
// supportActionBar!!.setDisplayShowHomeEnabled(true);
val drawerLayout = findViewById<DrawerLayout>(R.id.drawer_layout);
val navigationView = findViewById<NavigationView>(R.id.drawer_navigation_view);
val navController = Navigation.findNavController(this, R.id.navigation_host_fragment);
NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)
NavigationUI.setupWithNavController(navigationView, navController)
navigationView.setNavigationItemSelectedListener(this)
}
Run Code Online (Sandbox Code Playgroud)
但是由于我当时没有工具栏,它会引发错误(在空对象上调用 ActionBar.setTitle)。
是否有可能有这个,或者我需要放弃在这种情况下使用导航组件的想法?
android navigation-drawer android-navigation android-navigationview android-architecture-navigation
我们正在构建一个使用 System.Drawing 包的 .Net Core 2.0 C# Web 应用程序。
我在Mac上编写代码,但它也会在Windows机器上开发,并部署到Linux服务器上。
要在 OSX 上使用 System.Drawing,我必须将 runtime.osx.10.10-x64.CoreCompat.System.Drawing Nuget 包添加到我的项目依赖项中。
但该代码现在无法在 Windows 机器上运行。当尝试使用 Graphics(System.Drawing 的一部分)对象的 DrawString 方法时,我们得到 System.AccessViolationException。
所以,我的问题是解决这个问题的常用方法是什么?是否可以在这个多操作系统设置中使用 System.Drawing 类?
android ×6
java ×2
.net-core ×1
android-architecture-navigation ×1
c# ×1
code-reuse ×1
data-binding ×1
datetime ×1
dst ×1
gradle ×1
ios ×1
kotlin ×1
mvvm ×1
opencv ×1
parcelable ×1
performance ×1
polymorphism ×1
swift ×1
timezone ×1
utc ×1
viola-jones ×1