Solidot 公告
文章提交注意事项:
请在发布文章时用HTML代码加上至少一条新闻来源的链接;原创性消息,可加入相关信息(如涉及公司的网址)的链接。有任何问题,邮件至:he.fang#zhiding.cn
注意:收到邮件乱码的用户请修改客户端的默认字体编码,从"简体中文(GB2312)"修改为"Unicode(UTF-8)"。
孟加拉国技术工程大学和 UCLA 的研究人员
开发出一种框架,能从文本描述创造 Android 应用。
研究报告(PDF)发表在预印本网站 arXiv 上。这项研究在人类语言和编程语言之间架起桥梁,让编程变得更容易。大部分此类的技术是基于端对端的神经网络机器翻译,类似 Google 翻译使用的技术。但绝大部分它们都无法生成包含数百行代码的应用。为了克服这一限制,研究人员创造了一种形式语言,能抓住应用代码中的复杂性。他们开发的框架被称为
Text2App,其演示发布在 GitHub 上。
当 20 年前人类基因组项目和 Celera Genomics 公司测序人类基因组时,他们没有完整测序。有 15% 的基因组因为技术限制研究人员无法弄明白某些 DNA 片段是如何组合在一起的。科学家之后解决了部分问题,但仍然有 8% 的基因组缺失。现在,Telomere-to-Telomere (T2T) 联盟的研究人员宣布
完成了对人类基因组完整测序。
研究报告发表在预印本网站 bioRxiv 上。研究人员报告发现了编码蛋白质的 115 个新基因,基因总数达到 19,969 个。来自 Pacific Biosciences 公司的新测序技术帮助研究人员完成了这一成就,新技术使用激光扫描从细胞里隔离的 DNA 长链,一次最高 2 万碱基对。
调查网络攻击的安全公司 Mandiant 的高级副总裁 Charles Carmakal 称,黑客是在 4 月 29 日通过一个 VPN 账号
进入美国最大燃油管道公司 Colonial Pipeline 的内网。VPN 允许雇员远程访问公司内网。该账号当时已经不再使用了,但仍然能用于访问内网。账号使用的密码曾被泄露到暗网,这意味着一位 Colonial Pipeline 雇员可能有另一个使用相同密码的泄露账号。至于黑客是如何获得密码 Carmakal 表示无法确定。该 VPN 账号没有使用多因素身份验证,因此黑客只要使用账号名和密码就能进入内网。调查人员不知道黑客是如何获得正确的用户名的。Carmakal 称他们没有发现公司雇员曾遭到钓鱼攻击。5 月 7 日凌晨 5 点,Colonial 控制室的一名雇员看到了勒索通知,他通知了上司,上司随后开始了关闭管道的程序。上午 6:10,全部燃油管道被关闭。
从 286 时代起,x86 处理器都是使用一个拜占庭系统去管理中断、故障和异常,它组合使用了查询表、权限检查等,可能会让人困惑,但大部分情况下能正常工作。不可避免的是,中断描述符表存在一些 bug,竞争条件、死锁、无限循环和权限冲突等问题虽然罕见但却难以避开。英特尔和 AMD 都各自提出一种方案
去简化 x86 处理器的中断处理。两家公司的方案是互相不兼容的,英特尔野心更大,但将需要程序员重写程序才能利用新的机制,而 AMD 的方案更像是补丁而不是彻底改变,因此更简单。英特尔提出了
FRED (Flexible Return and Event Delivery) 去替代中断描述符表及其中断描述符,将权限级别的数量从 4 个减少到 2 个。FRED 是一个可选的系统,能与现有的方法共存,你需要在启动时候启用 FRED。AMD 的方案称为
Supervisor Entry Extensions (SEE),保留了现有的中断描述符表和权限数量,它调整了现有的 SYSCALL 指令,添加了一个状态位标记中断处理程序为可重入,它寻求堵上一些漏洞。Linux 作者 Linus Torvalds
认为这两个方案都是好主意,建议都实现一下。两个方案并非完全互相排斥的。
function effect_add(ele,num2=1){
var num1 = parseInt(ele.text());
num2=num1+1;
var tt = 15;
var cc = 3;
var span_num = num2-num1;
if(span_num<=0)return false;
if(span_num<10){
tt=0.1;cc=1;
}else if(span_num>=10 && span_num<20){
tt=10;cc=2;
}else{
tt=15;cc=3;
}
var nn = 0;
var tc = parseInt(span_num/cc);
var c_num = 0;
var rt = parseInt(tt*100/tc);
var t = setInterval(function(){
if(c_num == tc){
var val = num1+span_num;
clearInterval(t);
}else{
var val = num1+cc*c_num;
}
ele.text(val);
c_num++;
},rt);
}
$("div.actions a[rel=hvala]").click(function () {
var _this = $(this);
var span = _this.find('span');
var id = _this.attr('data');
$.post('//solidot.justindustin.workers.dev/my/act?op=hvala', {id: id}, function (data) {
var data = eval("(" + data + ")");
if (data.id == 1) {
effect_add(span,data.num);
_this.parent('li').toggleClass('active');
} else {
alert(data.msg);
if (data.id == -2) {
window.location.href = "/login";
}
}
});
});
$("div.actions a[rel=fav]").click(function () {
window.location.href="/login";
})
$('div.block_m span.user').mouseover(function () {
var _this = $(this).children('.user_box');
if (_this.html() == "") {
var start = '
';
var end = '
';
_this.html(start + '
' + end);
$.ajax({
type: "POST",
url: "/user/userinfo",
data: "user=" + $(this).attr('id'),
success: function (data) {
var data = eval("(" + data + ")");
var content = '';
if (data[0] == -2) {
content += '
暂无个人简介
';
} else {
content += '
' + data[0][0] + data[0][1] + '
';
content += '
关系:';
if (data[1] == -1) {
content += '自己';
} else if (data[1][0] == 0) {
content += '
普通
修改关系';
} else if (data[1][0] == 1) {
content += '
朋友
修改关系';
} else if (data[1][0] == 2) {
content += '
敌人
修改关系';
}
content += "
";
if (data[2] != undefined) {
content += '
签名:' + data[2] + '
';
}
}
_this.html(start + content + end);
}
})
}
else
_this.removeClass('hiden')
}).mouseout(function () {
$(this).children('div.user_box').addClass('hiden')
})
$('#ul_nav li.s_icon').mouseover(function(){
var d = $(this).children('div');
d.toggleClass('hiden');
}).mouseout(function(){
var d = $(this).children('div');
d.toggleClass('hiden');
});
$('.wechat').mouseover(function(){
$('.wechat_code').toggleClass('hiden');
}).mouseout(function(){
$('.wechat_code').toggleClass('hiden');
});
$(document).ready(function(){
$('.nav-secondary a').click(function(){
var _txt = $(this).text();
_hmt.push(['_trackEvent', 'nav', 'click', _txt])
})
$('.btn_ss').click(function(){
var _txt = $(".textinp").val()
_hmt.push(['_trackEvent', 'search', 'click', _txt])
})
$('.block_m a').click(function(){
var _txt = $(this).text();
_hmt.push(['_trackEvent', 'story', 'click', _txt])
})
})
document.write(unescape("%3Cscript src='https://hm.baidu.com/h.js%3Fd11396a350156e4682e4156a671bdaf1' type='text/javascript'%3E%3C/script%3E"));