avatar
这个应该咋做好?# Programming - 葵花宝典
f*9
1
http://www.appleinsider.com/articles/10/12/11/html5_on_android_samsung_g
alaxy_tab_disappointing_vs_apple_ipad.html
Oversized phone rather than a real tablet
"One of the oddest aspects of the Galaxy Tab browser," Sencha reports,
"is its CSS pixel to device pixel ratio. When queried in landscape mode,
the Galaxy reports a screen.width of 683px and screen.height of 334px.
Since the actual device resolution offers 1024×600, it’s giving us a
1.5× ratio of device to CSS pixels. This is a little bit of an odd
choice since there shouldn’t be any reason why it can’t offer a 1:1
device-to-CSS-pixel ratio (or even just match the iPhone/Nexus One
convention of a 320 pixel device.width — which would give it a 1.875
ratio). This makes the Galaxy slightly bigger than a regular phone
screen in CSS pixels, but not really big enough to handle what people
want to put in a tablet screen."
The firm concluded, "the practical effect of this decision is that the
Galaxy Tab is effectively an 'over-sized phone' for the purposes of web
content. For example, an iPad-style side-navigation section just won’t
fit on the screen. We think it’s probably best to treat it as a phone
with big pixels rather than a true tablet."
One problem with using Android 2.2 for tablets, Sencha explained, was
that "when the Android browser gets ready to animate anything — whether
it’s a CSS animation or a plain old page scroll — it shifts from high-
quality to low-quality display mode. In low-quality mode, it turns off
anti-aliasing (presumably on the theory that since things are moving,
you won’t notice the quality degradation.) This would be less noticeable
on a smaller device. But on the 7″ Galaxy Tab, the resulting pixelation
is striking, particularly since it switches to low-quality mode as soon
as it detects a touch start event (but before anything moves)."
"We’re still waiting for the first awesome Android tablet," the report
observed.
avatar
o*g
2
假设是一些tips
每天要给不同的用户推不同的tip
但是每个tip的触发条件都可能是不同的
比如生日 冬天 地理位置 某个tip之后的几天。。。。
这个触发条件怎么设计比较好?或者有轮子?
avatar
T*n
3
轮令智昏啊,ipad不是oversize的phone?屏幕上galaxy tab比ipad强,还楞找个比率
出来说事

【在 f*****9 的大作中提到】
: http://www.appleinsider.com/articles/10/12/11/html5_on_android_samsung_g
: alaxy_tab_disappointing_vs_apple_ipad.html
: Oversized phone rather than a real tablet
: "One of the oddest aspects of the Galaxy Tab browser," Sencha reports,
: "is its CSS pixel to device pixel ratio. When queried in landscape mode,
: the Galaxy reports a screen.width of 683px and screen.height of 334px.
: Since the actual device resolution offers 1024×600, it’s giving us a
: 1.5× ratio of device to CSS pixels. This is a little bit of an odd
: choice since there shouldn’t be any reason why it can’t offer a 1:1
: device-to-CSS-pixel ratio (or even just match the iPhone/Nexus One

avatar
o*g
4
自己顶一下
各位大神,出手啊

【在 o***g 的大作中提到】
: 假设是一些tips
: 每天要给不同的用户推不同的tip
: 但是每个tip的触发条件都可能是不同的
: 比如生日 冬天 地理位置 某个tip之后的几天。。。。
: 这个触发条件怎么设计比较好?或者有轮子?

avatar
f*m
5
appleinsider.....

【在 f*****9 的大作中提到】
: http://www.appleinsider.com/articles/10/12/11/html5_on_android_samsung_g
: alaxy_tab_disappointing_vs_apple_ipad.html
: Oversized phone rather than a real tablet
: "One of the oddest aspects of the Galaxy Tab browser," Sencha reports,
: "is its CSS pixel to device pixel ratio. When queried in landscape mode,
: the Galaxy reports a screen.width of 683px and screen.height of 334px.
: Since the actual device resolution offers 1024×600, it’s giving us a
: 1.5× ratio of device to CSS pixels. This is a little bit of an odd
: choice since there shouldn’t be any reason why it can’t offer a 1:1
: device-to-CSS-pixel ratio (or even just match the iPhone/Nexus One

avatar
w*z
6
trigged event 事先都要insert 到 table 里。搞个cron job, 定时query table。

【在 o***g 的大作中提到】
: 自己顶一下
: 各位大神,出手啊

avatar
d*g
7
re
一看到是appleinsider就没有看下去了,以前没有事在上面看过几篇帖子,和果园版有
的一拼。

【在 f********m 的大作中提到】
: appleinsider.....
avatar
w*g
8
做一个规则引擎。

【在 o***g 的大作中提到】
: 假设是一些tips
: 每天要给不同的用户推不同的tip
: 但是每个tip的触发条件都可能是不同的
: 比如生日 冬天 地理位置 某个tip之后的几天。。。。
: 这个触发条件怎么设计比较好?或者有轮子?

avatar
f*m
9
it is challenging to find more self-righteous ppl than that on earth. maybe
it is too strong a word to use?

【在 d*********g 的大作中提到】
: re
: 一看到是appleinsider就没有看下去了,以前没有事在上面看过几篇帖子,和果园版有
: 的一拼。

avatar
N*n
10

Workflow, if you are using .Net

【在 o***g 的大作中提到】
: 假设是一些tips
: 每天要给不同的用户推不同的tip
: 但是每个tip的触发条件都可能是不同的
: 比如生日 冬天 地理位置 某个tip之后的几天。。。。
: 这个触发条件怎么设计比较好?或者有轮子?

avatar
t*l
11
不知道是不是因为先有的samsung captivate
今天在店里看了这个tablet,觉得不怎么样,反正我不会买
比ipad还贵。
现在想apple给ipad的定价很牛,基本上杜绝了其他竞争者进入10寸的地盘。

【在 f*****9 的大作中提到】
: http://www.appleinsider.com/articles/10/12/11/html5_on_android_samsung_g
: alaxy_tab_disappointing_vs_apple_ipad.html
: Oversized phone rather than a real tablet
: "One of the oddest aspects of the Galaxy Tab browser," Sencha reports,
: "is its CSS pixel to device pixel ratio. When queried in landscape mode,
: the Galaxy reports a screen.width of 683px and screen.height of 334px.
: Since the actual device resolution offers 1024×600, it’s giving us a
: 1.5× ratio of device to CSS pixels. This is a little bit of an odd
: choice since there shouldn’t be any reason why it can’t offer a 1:1
: device-to-CSS-pixel ratio (or even just match the iPhone/Nexus One

avatar
z*e
12
用户login的时候,触发一个event
然后这个event依次判断每个tips的产生
你这些tips不是mutually exclusive的吧?
一个用户会有[0,n]个tips返回
自己写这些也没多难维护撒,不用轮子也没啥
avatar
p*r
13
+1,个人感觉这样比较节约资源。

【在 w**z 的大作中提到】
: trigged event 事先都要insert 到 table 里。搞个cron job, 定时query table。
avatar
o*g
14
好吧,我需求没说清楚
这些tip不是开发阶段能确定的,是business user维护的
触发条件可能还带and or
需要在功能强大和开发简单之间做一个折中,找到合适的点,并且也别整的太复杂,
business user不需要学习最好了
楼上有人提规则引擎,这个就属于功能太强大
还有db怎么存这些触发条件也是个问题
avatar
p*r
15
wwzz那个方案是最适合这种情况的,
biz user添加的触发一个逻辑层产生events,
所有的events存一个list,
db如果和trigger自己google去,
或者写个check function定时查也可以。

【在 o***g 的大作中提到】
: 好吧,我需求没说清楚
: 这些tip不是开发阶段能确定的,是business user维护的
: 触发条件可能还带and or
: 需要在功能强大和开发简单之间做一个折中,找到合适的点,并且也别整的太复杂,
: business user不需要学习最好了
: 楼上有人提规则引擎,这个就属于功能太强大
: 还有db怎么存这些触发条件也是个问题

avatar
o*g
16
你是说这个?
http://dev.mysql.com/doc/refman/5.5/en/triggers.html

【在 p**r 的大作中提到】
: wwzz那个方案是最适合这种情况的,
: biz user添加的触发一个逻辑层产生events,
: 所有的events存一个list,
: db如果和trigger自己google去,
: 或者写个check function定时查也可以。

avatar
p*r
17
db trigger能做得有限,
你这情况肯定需要通知用户,搞不好还要整些图片,啥的。
我建议你写个本地或远程funciton,定期检查比较方便。
biz用户可以各种定events,然后添加到list里
比如这是events list
#1 call zhaoce, 1/1/2015
#2 send gift to goodbug, 2/1/2015
#3 fuck someone, 3/1/2015
你写个功能定期检查这个list,
要是不频繁,用个time range把前后时间覆盖了
不久搞定了。

【在 o***g 的大作中提到】
: 你是说这个?
: http://dev.mysql.com/doc/refman/5.5/en/triggers.html

avatar
N*n
18
Try not to use db triggers. Hard to manage in the long run.
avatar
o*g
19
我举个例子
所有用户生日那天收到生日快乐这个tip
这个咋做?
biz user咋操作?内部咋运转的?

【在 p**r 的大作中提到】
: db trigger能做得有限,
: 你这情况肯定需要通知用户,搞不好还要整些图片,啥的。
: 我建议你写个本地或远程funciton,定期检查比较方便。
: biz用户可以各种定events,然后添加到list里
: 比如这是events list
: #1 call zhaoce, 1/1/2015
: #2 send gift to goodbug, 2/1/2015
: #3 fuck someone, 3/1/2015
: 你写个功能定期检查这个list,
: 要是不频繁,用个time range把前后时间覆盖了

avatar
N*n
20

You need some kinda periodical tasks / services scanning the db
records and execute.

【在 o***g 的大作中提到】
: 我举个例子
: 所有用户生日那天收到生日快乐这个tip
: 这个咋做?
: biz user咋操作?内部咋运转的?

avatar
p*r
21
我算是明白,你丫是找人做项目,不是问问题,哈哈。
你先说说你自己打算怎么做?

【在 o***g 的大作中提到】
: 我举个例子
: 所有用户生日那天收到生日快乐这个tip
: 这个咋做?
: biz user咋操作?内部咋运转的?

avatar
o*g
22
流程上肯定是这么做
我的问题是trigger的条件怎么做
有一种做法是,把公式存下来,数据库里就一列,就存这个公式
比如"$age>18 && $age<25"
但是读这个公式的就需要parse等等事情
biz user的后台界面得能产生这个公式,这个也是很复杂的
如果这么做,有没有轮子?公式解析和界面上管理这个公式都需要轮子
还有一种土法,比如光age,可是加两列ageFrom ageTo。还有其他各种变量都往上加,
这个处理起来方便很多,但是限制也是很多。比如biz user想要所有属羊的,就做不了。

【在 N********n 的大作中提到】
:
: You need some kinda periodical tasks / services scanning the db
: records and execute.

avatar
X*r
23
抛个砖:把每个条件的逻辑和参数分开。逻辑用代码实现,每种有一个名字,不放在数
据库里。数据库里每个条件包括它所用的逻辑的名字,以及参数列表。

了。

【在 o***g 的大作中提到】
: 流程上肯定是这么做
: 我的问题是trigger的条件怎么做
: 有一种做法是,把公式存下来,数据库里就一列,就存这个公式
: 比如"$age>18 && $age<25"
: 但是读这个公式的就需要parse等等事情
: biz user的后台界面得能产生这个公式,这个也是很复杂的
: 如果这么做,有没有轮子?公式解析和界面上管理这个公式都需要轮子
: 还有一种土法,比如光age,可是加两列ageFrom ageTo。还有其他各种变量都往上加,
: 这个处理起来方便很多,但是限制也是很多。比如biz user想要所有属羊的,就做不了。

avatar
s*i
24
可以考虑这么设计:
1. 一个尚未发生的Event表,按时间排序,每个event有个expected trigger time;
2. 一个Action的列表。注意,Action本身可以产生events的;
3. 一个events到actions的map (1: n)
具体到怎么加新的event,是另一个话题。比如“生日前一天”就可以是一个event。生
日那天也是一个 event。
当event handler(基本上就是处理 now > event expected time)发现可以发生的
event的时候,去执行map里的actions。
[发表自未名空间手机版 - m.mitbbs.com]
avatar
o*g
25
思路很好,多谢
还是万黑给力啊

【在 X****r 的大作中提到】
: 抛个砖:把每个条件的逻辑和参数分开。逻辑用代码实现,每种有一个名字,不放在数
: 据库里。数据库里每个条件包括它所用的逻辑的名字,以及参数列表。
:
: 了。

avatar
a*f
26
rule engine最灵活吧,用户改动也容易
avatar
w*z
27
rabbitmq 有delayed message
http://www.javacodegeeks.com/2012/04/rabbitmq-scheduled-message
可以看看

【在 s*i 的大作中提到】
: 可以考虑这么设计:
: 1. 一个尚未发生的Event表,按时间排序,每个event有个expected trigger time;
: 2. 一个Action的列表。注意,Action本身可以产生events的;
: 3. 一个events到actions的map (1: n)
: 具体到怎么加新的event,是另一个话题。比如“生日前一天”就可以是一个event。生
: 日那天也是一个 event。
: 当event handler(基本上就是处理 now > event expected time)发现可以发生的
: event的时候,去执行map里的actions。
: [发表自未名空间手机版 - m.mitbbs.com]

avatar
z*e
28
其实你自己弄个scheduler也可以
但是我觉得,这个功能只有在用户登陆时候才有用
干脆就在登陆的时候计算就是了
难道用户会长时间在线,需要推送?
avatar
s*i
29
如果要是发送spam电邮,光靠用户登录的话不太可靠了。

【在 z****e 的大作中提到】
: 其实你自己弄个scheduler也可以
: 但是我觉得,这个功能只有在用户登陆时候才有用
: 干脆就在登陆的时候计算就是了
: 难道用户会长时间在线,需要推送?

avatar
o*g
31
app里的notification能从服务器推么?

【在 z****e 的大作中提到】
: 其实你自己弄个scheduler也可以
: 但是我觉得,这个功能只有在用户登陆时候才有用
: 干脆就在登陆的时候计算就是了
: 难道用户会长时间在线,需要推送?

avatar
z*e
32
……这个我们用scheduler实现

【在 s*i 的大作中提到】
: 如果要是发送spam电邮,光靠用户登录的话不太可靠了。
avatar
z*e
33
这个难点应该在于app端编程
只要app能够通知server并接收notification,都好办

【在 o***g 的大作中提到】
: app里的notification能从服务器推么?
avatar
m*h
34
一个比较简单直接的办法,主要用数据库。
你要多多少少山寨个configurable的rule repo,让后围绕它做文章。
1, rule
可能在开始的时候business会提供你一些简单的rule to start,以后会增加更复杂的
rule,turn on/off, 或者改参数。
假设business想给第二天生日的用户发封生日快乐邮件,可以用这么个rule table
rule_id: 123
rule_trigger:MORNING_BATCH
rule_name:one_day_befor_user_birthday
rule_sql: select user_id, first_name, last_name, email from user where user.
birth_day = system_date + [DAY_BEFORE_BIRTH_DAY]
parameters: DAY_BEFORE_BIRTH_DAY=1
email_template:202
active:true
另外一个table存email_template
template_id: 202
email_subject: Happy Birth Day [FIRST_NAME]
email_body: Hello, [FIRST_NAME], happy birthday to you!
更复杂点的rule,假设marketing想给那些过去30天买过裤衩的用户促销拖鞋
rule_id: 124
rule_trigger:NIGHT_BATCH
rule_name:marketing_promotion_based_on_last_purchase
rule_sql: select user_id, first_name, last_name, email, user_order.item_desc
,’[PROMOTION_ITEM]’ promotion_item from user, user_order where user.user_
id=user_order.user_id and uesr_order.item=‘[PURCHASED_ITEM]’ and user_
order.purchage_date>systemDate-30
parameters: PURCHASED_ITEM =‘裤衩’,PROMOTION_ITEM=‘拖鞋’
email_template:205
active=true
对应的email_template
template_id: 205
email_subject: here is something for you [FIRST_NAME]!
email_body: Hello, [FIRST_NAME], we think you might be interested in [
PROMOTION_ITEM]
在这个例子里,通过rule SQL和parameters我们能得到一个能“run“ 的SQL或者
script,然后email template定义要送的email内容,这里要用到free marker或者自己
写个东西来替换template里的token。
2,然后做一个UI让business控制这些rule,和template,turn on或者turn off,该时
间,该参数,改email之类,甚至copy一个存在的rule建立新的rule with不同的参数。
基本的crud操作。这个SQL部分得你写。
3,要写一个简单的workflow来run这些rule,比如
void runRule(int ruleId){
Map rule = DB.queryByRuleId(ruleId);
//figure out the sql
String realSql = StringUtil.replaceToken(rule.get(“rul_sql”), rule.
get(“parameters”);
//find the email template
Map emailTemplate = DB.queryTemplateById(rule.get(“
email_template”));
String emailSubjectTemplate=emailtemplate.get(“email_subject”);
String emailBodyTemplate = emailTemplate.get(“email_body”);
//run sql
List> records = DB.runQuery(realSql);
//process every record and send email
for(Map record:records){

String emailSubject = StringUtil.replaceToken(emailSubjectTempate,
record);
String emailBody = StringUtil.replaceToken(emailBodyTemplate, record
);
Email.sendEmail(record.get(“email”), emailSubjet, emailBody)
}
}
至于这么trigger这个workflow,简单的话可以schedule它,fancy点的话发个morning_
batch message,然后用一堆listern/worker来run这些rules
avatar
s*i
35
app端是polling 还是双向通信(web socket?)?

【在 z****e 的大作中提到】
: 这个难点应该在于app端编程
: 只要app能够通知server并接收notification,都好办

avatar
m*h
36
如果client端是mobile app的话,常用push notification,有third party service像
urbanairship,parse什么的。pull得自己整infrastructure.
avatar
N*n
37

Said it early on: use Workflow if on .Net, or FOSS counterparts
if not.

【在 o***g 的大作中提到】
: 流程上肯定是这么做
: 我的问题是trigger的条件怎么做
: 有一种做法是,把公式存下来,数据库里就一列,就存这个公式
: 比如"$age>18 && $age<25"
: 但是读这个公式的就需要parse等等事情
: biz user的后台界面得能产生这个公式,这个也是很复杂的
: 如果这么做,有没有轮子?公式解析和界面上管理这个公式都需要轮子
: 还有一种土法,比如光age,可是加两列ageFrom ageTo。还有其他各种变量都往上加,
: 这个处理起来方便很多,但是限制也是很多。比如biz user想要所有属羊的,就做不了。

avatar
l*t
38
这应该倒过来,生日自己注册递归事件

【在 N********n 的大作中提到】
:
: Said it early on: use Workflow if on .Net, or FOSS counterparts
: if not.

avatar
c*e
39
这个太容易了,就是建立一个表,把所有的判断的items各自写一个row放表里。然后用
户登录了首先就query这个表,可以写个stored procedure来拿到结果。

【在 o***g 的大作中提到】
: 我举个例子
: 所有用户生日那天收到生日快乐这个tip
: 这个咋做?
: biz user咋操作?内部咋运转的?

avatar
d*e
40
这个你抽象一个engine.
里面有很多obj.
每个obj,有一组规则
加上一个state changed event call back来激活。
还需要什么?

【在 o***g 的大作中提到】
: 假设是一些tips
: 每天要给不同的用户推不同的tip
: 但是每个tip的触发条件都可能是不同的
: 比如生日 冬天 地理位置 某个tip之后的几天。。。。
: 这个触发条件怎么设计比较好?或者有轮子?

avatar
o*g
41
多谢,看来这个是商业上的正统解决方案
sql是谁写的?biz user还是开发人员?

user.

【在 m***h 的大作中提到】
: 一个比较简单直接的办法,主要用数据库。
: 你要多多少少山寨个configurable的rule repo,让后围绕它做文章。
: 1, rule
: 可能在开始的时候business会提供你一些简单的rule to start,以后会增加更复杂的
: rule,turn on/off, 或者改参数。
: 假设business想给第二天生日的用户发封生日快乐邮件,可以用这么个rule table
: rule_id: 123
: rule_trigger:MORNING_BATCH
: rule_name:one_day_befor_user_birthday
: rule_sql: select user_id, first_name, last_name, email from user where user.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。