我在我的新应用程序中启动了一项服务.该服务是有前途的,带有通知.当在AVD 2.1 API Level 7中运行时,一切正常.但是当它在运行Gingerbread的三星Galaxy Tab上运行时,服务将启动(图标和应用程序名称出现在通知区域的顶部),但几秒钟后,服务就会消失.我可以看到的Log中的最后一个条目与我的App相关联,是我的Log.d("Taglines","Return with with"+ START_STICKY)的结果,它紧接在"return START_STICKY"之前.在我的服务的onStartCommand覆盖中,如下所示:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
int rc ;
Log.d("Taglines","onStartCommand()");
Toast.makeText(this, "Starting service TagsManager", Toast.LENGTH_SHORT).show();
Log.d("Taglines","Calling super.onStartCommand()");
rc = super.onStartCommand(intent,flags,startId);
Log.d("Taglines","super.onStartCommand return code was " + rc);
createNotification(INITIAL_NOTIFICATION_TEXT);
Log.d("Taglines","Returning with " + START_STICKY);
return START_STICKY ;
}
Run Code Online (Sandbox Code Playgroud)
通知设置如下:
void createNotification(String text) {
Log.d("Taglines","createNotification called");
if (mNotificationManager == null) {
// Get a reference to the Notification Manager
String ns = Context.NOTIFICATION_SERVICE;
mNotificationManager = (NotificationManager) getSystemService(ns);
Log.d("Taglines","Obtained …Run Code Online (Sandbox Code Playgroud) 使用Oracle 11G(而非R2)数据库,我们需要创建报告,以显示个人报告结构所属的领导委员会.
在较高级别,我们通过在表board_members中查找员工ID来确定个人在董事会中的存在.
board_members表有一个位置ID,可用于访问board_positions,从那里我们可以确定该职位是否在领导委员会.(以下样本.)
对于担任领导委员会成员的任何员工,他自己的身份证将代表BOARD_LEAD.
对于任何其他员工,report_to值将被递归,直到识别出领导委员会成员,并且该人员的ID将为BOARD_LEAD.
我们的顶级员工有report_to等于他们自己的empl_id,而不是更常见的NULL.
为了有希望证明这一点,我在下面设置了样本表,样本数据和样本所需的输出.
我试图了解如何创建一个VIEW,为全职等效和其他报告需求提供此类信息.我确信将涉及CONNECT BY,但我发现Oracle文档令人困惑,我发现没有包含多个表的示例.(我担心缺乏这个例子是有充分理由的.)
甚至可以在Oracle 11g(而不是R2)上编写这样的视图,而不是必须随每个位置更改更新的中间表?
Create table board_positions /* If board_position = 'LDRSHPCOMM' this is a top position */
(member_id varchar(6),board_position varchar(18));
Create table board_members
(empl_id varchar(6), member_id varchar(6));
Create table emp
(empl_id varchar(6),ename varchar(32),report_to varchar(6));
Insert into board_positions values('CEO','LDRSHPCOMM');
Insert into board_positions Values('COO','LDRSHPCOMM');
Insert into board_positions Values('CFO','LDRSHPCOMM');
Insert into board_positions Values('CIO','LDRSHPCOMM');
Insert into board_positions values('WANABE','NEWBIE');
Insert into emp ('TOPDOG','Big Guy','TOPDOG');
Insert into emp ('WALLET','Money Bags','TOPDOG');
Insert into emp ('OPSGUY','Meikut Work','TOPDOG');
Insert into …Run Code Online (Sandbox Code Playgroud) 我有一个图像处理器PHP脚本,它包含以下代码:
if (!is_dir($fullFile)) {
if (is_readable($fullFile)) {
$im = getimagesize($fullFile); // Will be FALSE if not an image
Run Code Online (Sandbox Code Playgroud)
在某些情况下,脚本将在getimagesize失败,并出现以下错误:
getimagesize(/path/to/file.jpg) [function.getimagesize]: failed to open stream: Permission denied at www.yada.yada/page.php
Run Code Online (Sandbox Code Playgroud)
在这种情况下,/ path/to/file.jpg的权限肯定是禁止的(400),所以我期望is_readable测试阻止我达到这一点.除了以不同方式设置权限之外,我还可以做些什么来解决这个问题?为什么似乎is_readable的结果不正确?is_readable是否可能与文件所有者的EUID一起运行,而getimagesize不是?这是对我有意义的唯一解释,但即使这些知识也没有帮助解决.
由@ hek2mgl提示我创建了这个名为readable.php的超复杂脚本:
<?php echo is_readable("/stora2/Pics/2009/2009-07-26/DSC00532.JPG") . "\n\n"; ?>
Run Code Online (Sandbox Code Playgroud)
然后我将用户切换到Web服务器用户(实际上是此服务器上的www-data)并运行它.结果是
1
Run Code Online (Sandbox Code Playgroud)
然后我作为同一个用户运行strace.这些是我使用的命令.结果是70KB +文件,SO不会让我完整发布,所以它发布在http://pastebin.com/mFqiSBiz
dennis@luke:~$ sudo su - www-data
$ ls -l "/stora2/Pics/2009/2009-07-26/DSC00532.JPG"
-rw------- 1 dennis dennis 524288 2012-02-11 08:18 /stora2/Pics/2009/2009-07-26/DSC00532.JPG
$ file "/stora2/Pics/2009/2009-07-26/DSC00532.JPG"
/stora2/Pics/2009/2009-07-26/DSC00532.JPG: writable, regular file, no read permission
$ php /home/dennis/readable.php
1
$ strace php /home/dennis/readable.php > …Run Code Online (Sandbox Code Playgroud) 这实际上是一个由三部分组成的问题,我将在下面解释,但问题是:
我有一个在 Linux(多个发行版)上运行的 C 程序,通常由具有普通权限的用户运行,但程序的某些部分必须以 root 权限运行。为此,我使用了 set-UID 标志,就目前而言,效果很好。
然而,现在我想用普通用户权限调试程序,我发现我有一个catch-22。我刚刚添加了一个函数来创建临时文件 (/tmp/my_name-XXXXXX),并且该函数是从程序内的许多点调用的。无论出于何种原因,该函数在运行时都会发出以下消息:
sh: /tmp/my_name-hhnNuM: Permission denied
Run Code Online (Sandbox Code Playgroud)
(当然,实际名称有所不同。)然而,该程序能够执行原始套接字函数,我绝对知道除 root 之外的用户无法执行该函数。(如果我删除 setuid 标志,程序就会严重失败。)
如果我在没有 sudo 的情况下通过 gdb 运行这个程序,它会在原始套接字上死掉(因为 gdb 显然不——或者可能不能——尊重程序上的 setuid 标志)。如果我在“sudo gdb”下运行它,那么一切正常。如果我将其运行为“sudo ./my_name,一切正常。
这是该程序的 ls -l 输出:
-rwsr-xr-x 1 root root 48222 Jun 23 08:14 my_name
Run Code Online (Sandbox Code Playgroud)
所以我的问题(排名不分先后):
我有一个服务,在这个讨论中,持有一个数字和一个字符串,以呈现给一个活动.可以把它想象成面向服务的复制缓冲区.启动后,服务启动(使用startService),如下所示:
Intent srvIntent = new Intent(this, SetManager.class);
Bundle bundle = new Bundle();
bundle.putLong(getString(R.string.intent_key_setnbr), setNbr);
bundle.putString(getString(R.string.intent_key_setmsg), setMsg);
srvIntent.putExtras(bundle);
startService(srvIntent);
return true;
Run Code Online (Sandbox Code Playgroud)
一切正常.服务启动,在通知中显示由setMsg标识的消息(例如"MESSAGE1").
当用户触摸通知时,将启动一个活动,并且该活动(其中包括)更新setNbr和setMsg,并将这些更新回服务.该服务反过来用新消息更新通知,例如"MESSAGE2"(也可以正常工作).
但这就是问题:当用户触摸此通知时,原始setMsg("MESSAGE1")是Activity显示的内容,而不是"MESSAGE2".我已经放入了Log.d()内容来查看进程出错的地方,但我没有看到它.服务记录传入的"MESSAGE2"就好了,并在replaceExtras()之后命中代码.实际上,传入的值必须正确,否则通知不会更新为"MESSAGE2".所以似乎Notification Intent的附加组件没有正确更新,因为所有其他往返的东西都可以正常工作.或者,不太可能,活动只在第一次尝试时正常工作?
所以我质疑我更新通知的方法.我相信它是"通过书本",但作为一个相对的Android新手,有很多书,我还没有读过.非常感谢你的指点.这是服务代码:
package yada.yada.boom.Setlines;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.IBinder;
import android.text.ClipboardManager;
import android.util.Log;
public class NoteManager extends Service {
private NotificationManager mNM = null;
private Notification notification = null;
private Context context;
private final CharSequence contentTitle = "Setlines";
private CharSequence contentText;
private Intent notificationIntent;
private PendingIntent …Run Code Online (Sandbox Code Playgroud) 我们正在设计一个应用程序,该应用程序将向经理发送电子邮件,提醒他们必须进行某些审批。电子邮件采用 HTML 格式,并包含一个表格。我们不明白我们做错了什么导致最后一段出现在表格的右侧而不是它的下方。
下面是一个示例。我依赖的工具“tidy”这次没有提示。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta content=
"HTML Tidy for Linux/x86 (vers 6 November 2007), see www.w3.org"
name="generator">
<meta content='text/html; charset=us-ascii' http-equiv=
"Content-Type">
<style type="text/css">
body {font-family: Calibri; }
caption {font-family: Calibri;color: 'black'; font-size: '125%; }
table.main tr { };
table.main td.bottomcaption {text-align: 'center'; vertical-align: 'middle'; font-family: 'Calibri'; color: 'black'; font-color: 'black'; font-size: '125%'; }
table.main th {vertical-align: 'bottom'; color: blue; background-color: lightyellow; }
</style>
<title>Payable Time awaiting approval</title>
</head>
<body>
<p>Hello, …Run Code Online (Sandbox Code Playgroud) 我正在为Android构建CalendarDisplay应用程序.除此之外,该应用程序允许用户选择添加到纪元的天数(纪元是1899年的日期),并且该结果将在显示器上以图形方式表示.但是,当我从日历值设置日期值时,我得到了意想不到的结果:年份似乎偏离了1900的值.虽然我可以简单地将1900添加到结果中,但这似乎是错误的答案,因为我在做什么是(我相信)这本书.或者我可以继续我拥有的东西; 这也有效.但是,它有相同的副本问题.这是代码,带有用于调试的备用变量:
public void gotoCal(int days) {
// epochCal has been initialized as follows:
// (HYF_BASE_YEAR = 1899, HYF_BASE_MONTH = 11, HYF_BASE_DAY = 1)
// epochCal = (Calendar) Calendar.getInstance();
// epochCal.set(HYF_BASE_YEAR, HYF_BASE_MONTH, HYF_BASE_DAY);
Calendar cal = (Calendar) epochCal.clone();
cal.add(Calendar.DATE, days);
int year = cal.get(Calendar.YEAR);
Date date = cal.getTime();
int year2 = date.getYear();
if (year2 != year) {
date.setYear(year);
}
int year3 = date.getYear();
gotoDate(date);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我在调试模式下以gotoCal(40000)运行此代码时,在gotoDate()行有一个断点,我在字段中看到以下值:year = 2009,year2 = 109,year3 = 2009
Calendar.getTime()函数是否应该返回过去1900年的日期(我没有看过这样的文档)?或者我可能会做些什么来影响它呢?或者我还有什么可能做错的?
我记得,几年前当我开始使用mySQL时,设置"就是这样"是一件噩梦,以便找到库(特别是mySQL库!).就我而言,我相信ldconfig是解决问题的工具.闪存到2012年 - 刚刚安装了一个包含64位Ubuntu 12.04的新"主"系统,我正在确保所有源代码都能编译.想象一下,我很惊讶我和libmysqlclient一起回到同一条船上.
我的网络搜索显示了很多尝试,没有任何帮助.一路走来,我发现了这个诀窍:gcc ...... mysql_config --cflags --libs- 非常好,但是没有用.
因此,例如,结果:
gcc -D_FILE_OFFSET_BITS=64 `mysql_config --cflags --libs` \
-o check-my-ip \
-s check-my-ip.c ../common/ini-file.c
Run Code Online (Sandbox Code Playgroud)
是
/tmp/ccxAgCqr.o: In function `updateTables':
/usr/local/src/check-my-ip/check-my-ip.c:373: undefined reference to `mysql_init'
/usr/local/src/check-my-ip/check-my-ip.c:374: undefined reference to `mysql_real_connect'
/usr/local/src/check-my-ip/check-my-ip.c:381: undefined reference to `mysql_error'
/usr/local/src/check-my-ip/check-my-ip.c:381: undefined reference to `mysql_errno'
/usr/local/src/check-my-ip/check-my-ip.c:397: undefined reference to `mysql_field_count'
/usr/local/src/check-my-ip/check-my-ip.c:398: undefined reference to `mysql_use_result'
/usr/local/src/check-my-ip/check-my-ip.c:399: undefined reference to `mysql_fetch_row'
/usr/local/src/check-my-ip/check-my-ip.c:419: undefined reference to `mysql_free_result'
/usr/local/src/check-my-ip/check-my-ip.c:422: undefined reference to `mysql_field_count'
/usr/local/src/check-my-ip/check-my-ip.c:429: undefined reference to `mysql_close'
/tmp/ccxAgCqr.o: …Run Code Online (Sandbox Code Playgroud)