小编jph*_*jph的帖子

参考没有模块名称的ruby类

在ruby中是否有一种方法可以加载包含许多类的模块,并且能够访问这些类而无需使用模块名称作为前缀?考虑foo.rb和bar.rb:

foo.rb:

require 'bar'
bar = BarModule::Bar.new()
Run Code Online (Sandbox Code Playgroud)

bar.rb

module BarModule
  class Bar
  end
end
Run Code Online (Sandbox Code Playgroud)

基本上我喜欢foo.rb的能力,每次引用它时都不引用它的模块而引用"Bar"类.在java术语中,我正在寻找类似于:

import BarModule.*;
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

ruby

6
推荐指数
1
解决办法
1222
查看次数

三星软键盘在焦点改变后丢失按键

我的应用使用基于PIN的登录.我连续有四个EditText视图,并在每个视图上设置以下TextWatcher的单独实例:

private class PinDigitWatcher implements TextWatcher {

    private final EditText digit;

    public PinDigitWatcher(EditText digit) {
        this.digit = digit;
    }

    @Override
    public void afterTextChanged(Editable s) {
        if (s.length() <= 0)
            return;
        switch (digit.getId()) {
        case R.id.pin_digit_a:
            mPinDigitB.setFocusableInTouchMode(true);
            mPinDigitB.requestFocus();
            mPinDigitA.setFocusable(false);
            break;
        case R.id.pin_digit_b:
            mPinDigitC.setFocusableInTouchMode(true);
            mPinDigitC.requestFocus();
            mPinDigitB.setFocusable(false);
            break;
        case R.id.pin_digit_c:
            mPinDigitD.setFocusableInTouchMode(true);
            mPinDigitD.requestFocus();
            mPinDigitC.setFocusable(false);
            break;
        case R.id.pin_digit_d:
            mPinDigitD.setFocusable(false);
            onSubmitPin();
            break;
        }
    }

    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, …
Run Code Online (Sandbox Code Playgroud)

android android-keypad android-edittext android-virtual-keyboard samsung-mobile

6
推荐指数
1
解决办法
1163
查看次数

如何使片段荣誉软输入模式的活动

我在清单中配置了如下活动:

android:windowSoftInputMode="stateHidden|adjustPan"
Run Code Online (Sandbox Code Playgroud)

此活动创建一个片段.该片段将自身配置为onCreate()的全屏,例如:

setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme);
Run Code Online (Sandbox Code Playgroud)

片段的布局大致如下:

<LinearLayout>
  <!-- a fixed height header -->
  <ScrollView
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1.0">
    <LinearLayout
      android:layout_width="match_parent"
      android:layout_height="wrap_content">
      <!-- some EditTexts -->
    </LinearLayout>
  </ScrollView>
  <!-- a fixed height footer -->
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

不幸的是,当显示片段时,软键盘会自动显示,输入模式为"adjustResize"而不是"adjustPan".这会导致页脚始终可见; 当键盘显示时,ScrollView的高度会缩小.

如何配置片段以具有"stateHidden | adjustPan"行为?如果重要的话,我从支持库中获取片段功能.

android android-layout android-softkeyboard android-fragments android-fragmentactivity

5
推荐指数
1
解决办法
9091
查看次数

如何在不显示父级活动的情况下将一个全屏对话框片段替换为另一个?

我有一个使用单个自定义DialogFragment类的Activity。它的外观是数据驱动的,因此在调用之间看起来可能完全不同。

这是“全屏”,即

setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme);
Run Code Online (Sandbox Code Playgroud)

响应网络调用的结果,我关闭了当前正在显示的实例(如果有),并关闭了show()的新实例:

final CustomDialogFragment dialog = (CustomDialogFragment) getSupportFragmentManager().findFragmentByTag(DIALOG_TAG_CUSTOM);
if (dialog != null)
    dialog.dismiss();
final CustomDialogFragment newdialog = new CustomDialogFragment();
// configure some stuff on the new fragment that influences its appearance
newdialog.show();
Run Code Online (Sandbox Code Playgroud)

这是我的问题:运行此代码块时,在现有Fragment消失到新Fragment可见之间,我可以简要看到底层的Activity。我想以某种方式避免这种情况。

我的第一个想法是消除新片段的onResume()方法内的现有片段。也就是,尽可能长地延迟“ dismiss()”调用,以期希望新的片段在取消前一个片段之前就已经可见(使上一个片段模糊)。但这没有效果。

我正在考虑的另一个选择是使片段“可重新配置”,以便我可以“推入”新数据并触发它重新绘制其所有视图以匹配新数据。在此解决方案中,我将简单地重新配置现有片段(如果有的话),而不是将其解散并显示一个新片段。

我的问题:解散一个全屏DialogFragment并显示另一个全屏DialogFragment时,是否有一种更容易和/或更直接的方法来解决此临时“偷看”底层的Activity?

android android-fragments android-dialogfragment android-fragmentactivity

5
推荐指数
1
解决办法
4971
查看次数

mac security 命令在守护进程运行时需要写权限?

我的任务是将 Tomcat/Jenkins 安装从已弃用(现已在 Yosemite 中删除)的 SystemStarter 框架移动到 launchd。它作为“构建”用户启动并运行良好,除了一件事。我们构建过程的一部分涉及调用“安全”命令来操作钥匙串。这失败如下:

security: cert import failed: write permissions error
security: problem decoding
Run Code Online (Sandbox Code Playgroud)

如果我通过 ssh 进入构建机器并从命令提示符启动 Tomcat,通过 bin/startup.sh,则调用security不会抱怨。它只在我通过 launchd 启动 Tomcat 时抱怨。我的 plist 看起来像这样:

<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.apache.tomcat</string>
    <key>UserName</key>
    <string>builduser</string>
    <key>WorkingDirectory</key>
    <string>/Users/builduser</string>
    <key>Program</key>
    <string>/Users/builduser/bin/tomcat.sh</string>
    <key>KeepAlive</key>
    <dict>
        <key>SuccessfulExit</key>
        <true/>
    </dict>
    <key>EnvironmentVariables</key>
    <dict>
        <key>CATALINA_HOME</key>
        <string>/Users/builduser/Tomcat</string>
        <key>CATALINA_OPTS</key>
        <string>-Djava.awt.headless=true</string>
        <key>JAVA_OPTS</key>
        <string>-Xmx1024m -XX:MaxPermSize=512m</string>
    </dict>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

plist 位于 /Library/LaunchDaemons 中,而 tomcat.sh 只是一个启动 tomcat 然后等待进程终止的包装器。

macos tomcat keychain launchd

5
推荐指数
1
解决办法
3243
查看次数

实木复合地板文件的大小,firehose与火花

我通过两种方法生成Parquet文件:Kinesis Firehose和Spark作业。它们都被写入S3上的相同分区结构中。可以使用相同的Athena表定义查询两组数据。两者都使用gzip压缩。

但是,我注意到,Spark生成的Parquet文件大约是Firehose文件的3倍。有什么理由是这样吗?使用Pyarrow加载它们时,我确实注意到一些架构和元数据差异:

>>> import pyarrow.parquet as pq
>>> spark = pq.ParquetFile('<spark object name>.gz.parquet')
>>> spark.metadata
<pyarrow._parquet.FileMetaData object at 0x101f2bf98>
  created_by: parquet-mr version 1.8.3 (build aef7230e114214b7cc962a8f3fc5aeed6ce80828)
  num_columns: 4
  num_rows: 11
  num_row_groups: 1
  format_version: 1.0
  serialized_size: 1558
>>> spark.schema
<pyarrow._parquet.ParquetSchema object at 0x101f2f438>
uri: BYTE_ARRAY UTF8
dfpts.list.element: BYTE_ARRAY UTF8
udids.list.element: BYTE_ARRAY UTF8
uuids.list.element: BYTE_ARRAY UTF8

>>> firehose = pq.ParquetFile('<firehose object name>.parquet')
>>> firehose.metadata
<pyarrow._parquet.FileMetaData object at 0x10fc63458>
  created_by: parquet-mr version 1.8.1 (build 4aba4dae7bb0d4edbcf7923ae1339f28fd3f7fcf)
  num_columns: 4
  num_rows: 156
  num_row_groups: 1
  format_version: 1.0 …
Run Code Online (Sandbox Code Playgroud)

apache-spark parquet pyarrow amazon-kinesis-firehose

5
推荐指数
1
解决办法
192
查看次数

三星注2和注3屏幕桶

三星Note 2和Note 3报告的屏幕桶是什么?"正常"还是"大"?

以下是两部手机的统计数据:

Model   Dimensions            Density     Density Bucket    DP Dimensions
note2   720px x 1280px        265dpi      hdpi              480dp x 853dp
note3   1080px x 1920px       386dpi      xhdpi             540dp x 960dp
Run Code Online (Sandbox Code Playgroud)

来自Diane Hackborn的这篇文章:

http://android-developers.blogspot.com/2011/07/new-tools-for-managing-screen-sizes.html

...说"大"屏幕至少480dp x 640dp,所以这两款手机都符合资格.我想知道的是,他们是否实际上将自己报告为具有"大"屏幕,或者他们是否自我识别为具有"正常"屏幕.

不幸的是,我没有手机,所以我不能自己测试.

android android-layout android-screen android-screen-support samsung-mobile

4
推荐指数
1
解决办法
2701
查看次数

应用程序在接收gcm消息广播时未被唤醒

我最近使用谷歌的帮助程序类(GCMBroadcastReceiver,GCMBaseIntentService)将GCM消息传递添加到我的应用程序中.它在应用程序运行时非常漂亮,无论是在前台还是在前台时都没有.但是,当它没有运行时,没有任何作用.

作为测试,我扩展了GCMBroadcastReceiver并将日志语句添加到getGCMIntentServiceClassName()和peekService().当应用程序运行并且消息到达时,我看到前者被调用.操作系统然后实例化我的服务类,最终导致调用onMessage().

当应用程序未运行时,getGCMIntentServiceClassName()永远不会被调用.

我的清单几乎是Google的GCM示例中的样板代码.

我是否需要设置一个额外的权限或标志,以便操作系统在未运行时唤醒我的应用并且消息到达时具有正确的意图类别?我的接收器定义为:

<receiver
    android:name=".GCMBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <action android:name="com.google.android.c2dm.intent.REGISTRATION" />

        <category android:name="PACKAGENAME" />
    </intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)

请记住:这在应用程序在后台运行时有效.

android android-c2dm google-cloud-messaging

3
推荐指数
1
解决办法
3742
查看次数

android活动娱乐 - 意图是否包含原创附加内容?

我有一项活动,希望在推出时通过一些额外的活动.

当销毁并重新创建此活动时,getIntent()从内部调用返回的意图是否onCreate()包含最初启动活动时存在的相同内容?

android android-intent android-lifecycle android-activity

2
推荐指数
1
解决办法
1011
查看次数

正确的 python 谷歌广告库?

负责编写与 Google Ad Manager 交互的客户端。据我所知,Google 发布了 PyPi 上的三个“官方”Python 客户端库。正如自述文件中所示,其中一个似乎是遗留的,但另外两个似乎正在积极开发。

https://github.com/googleapis/google-api-python-client (旧版,首次发布 = 2011 年)

https://github.com/googleads/googleads-python-lib (首次发布 = 2014 年)

https://github.com/googleads/google-ads-python (首次发布 = 2018 年)

后两者拥有相同的三位开发人员。使用哪个?

python google-ad-manager google-api-python-client google-ads-api

2
推荐指数
1
解决办法
491
查看次数

控制Android EditText的键盘类型(仅限数字)

我有一个自定义的EditText,用于输入一系列数字.我在类的构造函数中为它设置了DigitsKeyListener(getInputType()= 2).

这对Galaxy S(4.0)起到了"正确的作用".视图获得焦点时出现的键盘只有数字,"空格",句号,逗号,短划线,退格和"完成".

但是,在较旧的2.2设备上,出现的键盘上有字母和更宽范围的符号,这些都不是我需要的.

我在网上找到了一个建议:

    setRawInputType(Configuration.KEYBOARD_12KEY);
Run Code Online (Sandbox Code Playgroud)

在初始化结束时.该值为"3".当我这样做时,两部手机的情况正好相反.Galaxy S上的键盘现在有字母(每个数字旁边,就像在手机上),而2.2设备上的键盘是我想要的(即基本上是计算器).

是否有一种统一的方法来获得适用于各种版本的"计算器"键盘,或者这是一种情况,我需要为SDK版本<= X做一件事,为版本> X做另一件事?

如果是这样,"X"的值应该是多少?这是一个特定的主要版本改变了吗?

android android-keypad android-softkeyboard

1
推荐指数
1
解决办法
2601
查看次数

解释SimpleDateFormat的行为

试试这个:

DateFormat df = new SimpleDateFormat("y");
System.out.println(df.format(new Date()));
Run Code Online (Sandbox Code Playgroud)

如果没有读取SimpleDateFormat的javadoc,你会期望输出什么?我的期望是"0".也就是说,当年的最后一位数,即2010年.

相反,它将其填充为2位数,就像格式字符串是"yy"一样.

为什么?似乎很奇怪.如果我想要2位数,那么我就用"yy"了.

java datetime core

0
推荐指数
1
解决办法
381
查看次数