标签 Twitter 下的文章

埃隆·马斯克证实,加密私信即将到来! 这是好东西。

今年早些时候,埃隆·马斯克 在 Twitter 上表示:Twitter 的 私信 Direct Messages (DM)需要像 Signal 协议这样的 端到端加密 End-to-End Encryption

早在 2016 年,爱德华·斯诺登要求 Twitter 的前首席执行官兼联合创始人杰克·多尔西添加 Signal 协议类似的安全措施到 Twitter 平台。

但是,这个协议从来没有被添加到 Twitter。它可能经过测试但还未部署实施。

根据最近的公告,Twitter 似乎即将实现这个安全协议 ?。

马斯克分享了他在公司演讲中的几张幻灯片,其中就包括为 Twitter 2.0 路线图规划的“加密私信”。

? Twitter 通信的 Signal 协议

twitter encrypted dms

虽然有一些安全研究员,例如 黄文津,已经在 Twitter 的 iOS 和 Android 应用程序中发现了对 Signal 协议 的代码引用。

但是直到现在,埃隆·马斯克才在 推文 中确认了该计划,该推文介绍了根据 “Twitter 2.0” 路线图将对 Twitter 平台进行的改进。

换句话说,埃隆·马斯克正式确认 Twitter 即将推出加密私信

twitter dm signal protocol

对于那些不知道 Signal 协议的人,我们简要地介绍一下 Signal 协议:Signal 协议是一种开源的加密协议,它允许以 完全前向保密 perfect forward secrecy (PFS)方式实施端到端加密。

该协议使用 “ 双棘轮算法 Double Ratchet algorithm ”,通信双方根据不断变化的共享密钥,来交换加密的消息。

这确保没有第三方可以得到通信消息的内容,因为共享密钥仅存在于通信双方的设备上。

Signal 应用程序充分利用了这个方法。但是,进一步来说,还有几个以隐私为中心的替代方案:

(LCTT 译注:Signal 协议是一种真正的端到端加密的通讯协议,号称是世界上最安全的通讯协议。只有参与通讯的用户可以读取并解密信息,而任何第三方(包括服务器)都无法查看到通讯的内容。总的来说,它可以防止潜在的窃听者(包括:通信服务商、互联网服务提供商甚至是该通讯系统的提供者),获取能够用以解密通讯内容的密钥。目前有大量即时通讯软件也使用或借鉴参考了 Signal 协议,例如:Skype、What'sApp、Facebook Messenger)

Signal 协议如何帮助 Twitter DM?

它可以防止恶意攻击者和政府去窥探 Twitter 用户的消息,从而使 Twitter 成为一个更加安全的平台。

Twitter 添加加密私信会对举报人、记者和社会活动家有益,因为他们经常会因其工作而面临被审查或成为攻击目标。

诚然,就隐私而言,加密私信可能不是最严格的保护措施。但有总比没有好

? 加密消息应该成为通讯软件的标准

在这个动荡的信息时代,我们看到更多的恶意攻击者试图未经授权访问敏感信息。

端到端加密应成为所有通讯软件的必要标准,我希望 Twitter 能够尽快添加它。

你有什么想法吗?请在下面的评论区中分享你的想法吧。


via: https://news.itsfoss.com/twitter-signal/

作者:Sourav Rudra 选题:lkxed 译者:chai001125 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Facebook 和 Instagram 或将在欧洲关闭

由于担心美国的监控行为,欧洲法院于 2020 年废除了一项名为“隐私保护”的欧盟-美国数据流动协议。在其裁决中,它还使美国公司用来向美国转移个人数据的另一个法律工具,即标准合同条款(SCC)更难使用。爱尔兰数据保护委员会周四通知其同行,它将阻止 Facebook 将用户数据从欧洲发送到美国。这一草拟的决定意味着 Facebook 也被迫停止依赖 SCC。Meta 公司曾多次警告说,这样的决定将使其在欧洲的包括 Facebook 和 Instagram 在内的许多服务关闭。

消息来源:Politico
老王点评:欧洲人,别怕,你看我们没有这种东西,不是也有别的嘛 :<

Chrome 优化后台页面处理策略,提升笔记本电池时间

Chrome 是耗能大户,因此在笔记本电脑上非常影响电池使用时间。Chrome 在最新的版本中增加了一个新的“快速强化节流”策略。该功能可以在 10 秒后停止后台页面加载 JavaScript 元素,而之前的限制是 5 分钟,并且它将限制唤醒定时任务,最多每分钟 1 次。谷歌称,这有望延长电池使用时长,当所有标签都被隐藏和静止时,CPU 占用有 10% 的改善。该功能过段时间才会进入稳定通道。

消息来源:Tech Radar
老王点评:感觉浏览器技术和 Web 技术无止境啊,Chrome 能占有这么大的市场,可见并非侥幸。

推特每天删除上百万个垃圾账户

之前,马斯克威胁要停止 440 亿美元的收购推特的交易,除非该公司拿出证据,证明垃圾机器人账户占看到广告的用户中不到 5%。推特在周四的一次简报会中说,推特每天删除超过 100 万个垃圾账户。该公司重申,人工审查人员随机检查了数千个账户,并使用公共和私人数据的组合,以计算该比例,在接受广告服务的用户中,垃圾账户远低于 5%。

消息来源:路透社
老王点评:虽然我认为马斯克在玩弄花招,但是要说推特只有 5% 的垃圾机器人账号,我是不信的。

Twitter 确认接受 440 亿美元收购提议

Twitter 公司今天在一份新闻稿中宣布,该公司已经接受了埃隆·马斯克以 440 亿美元收购该公司的提议。最终结果是马斯克以每股 54.20 美元的价格收购了该公司,这与他本月早些时候提出的初始报价中的价格相同。马斯克指出,“我投资 Twitter 是因为我相信它有可能成为全球自由言论的平台。”与此同时,他也开始履行此前公开 Twitter 算法的承诺,Twitter 在 GitHub 上创建了一个名叫 the-algorithm 的仓库,这个空空如也的仓库已经获得了五千余人的收藏。

消息来源:华尔街日报
老王点评:虽然我们只能望梅止渴,但是这总是一件好事,对吗?

Wine 项目尝试通过 GitLab 来改善开发工作流程

目前,Wine 依靠邮件列表的工作流程来提交新的补丁,而由项目负责人将这些补丁输送到 Wine 的 Git 仓库中。这次他们实验性地建立了一个 GitLab 实例,并与邮件列表整合,希望改善他们的开发工作流程,使之更容易跟踪各种补丁集的开发,保持对其进展的关注等。但他们也表示,目前还没有决定是否正式转向 GitLab。

消息来源:phoronix
老王点评:很多老牌的开源项目都极度依赖于邮件列表,而 Git 工作流反而是辅助。这主要是那些项目的老程序员们都习惯了邮件列表,虽然 Git 也是 Torvalds 开发的。

AI 帮助无需长时间观看视频录像也能分析动物行为

通常情况下,在研究动物的行为时,科学家必须观看许多小时的生物日常生活的视频录像。研究人员正在开发一项技术,它采用了一种利用计算机视觉和机器学习的图像分析算法。它可以区分动物个体并识别那些跟恐惧、好奇或与同一物种的其他成员互动有关的行为。虽然目前该系统只在圈养小鼠和猕猴的视频上进行了训练,但据说应该适用于所有动物物种。

消息来源:ethz
老王点评:现在有很多对 AI 的滥用,但是也确实有一些是用在了好的地方。

Google 搜索引擎导流作用越来越弱

Google 联合创始人 Larry Page 和 Sergey Brin 在 2004 年公司上市时说,他们的搜索结果展示是最好的,广告很少,很有用,也不突出。Page 还表示,他们希望用户尽可能快的离开 Google 前往正确的地方。2019 年,美国众议院反垄断委员会主席 David Cicilline 询问这一声明是否还属实。Google 在回复中跳过了这个问题。数据显示,Google 正采取方法让用户越来越多的停留在其网站而不是导流到第三方网站。2019 年超过半数的搜索让用户留在了 Google。SEO 顾问 Rand Fishkin 称,Google 从搜索引擎进化成了围墙花园。这种变化在智能手机上最为明显。

来源:solidot

拍一拍:不独谷歌,搜索引擎已经从“入口”变成了“终点";而另一方面,超级 APP 也在极力地将所有用户和流量都留在其流量花园之中。

黑客劫持 Twitter 名人账号发动协同攻击

美国时间周三,未知黑客劫持了 Twitter 上的名人和知名公司账号,同时发起比特币骗局,以回报社区 5000 BTC 的名义欺骗用户向其钱包地址转入比特币,声称会转出双倍。根据 Blockchain.com 的数据,截至周三傍晚,该比特币钱包一共收到 370 起交易,收到的比特币总价值超过了 10 万美元。问题根源似乎是 Twitter 的管理面板。暂时不清楚这次攻击是否有 Twitter 雇员参与或是否是外部第三方访问了管理面板。

来源:solidot

拍一拍:一方面吃惊于 Twitter 能有这样大的漏洞,另外一方面吃惊居然有这么多有 BTC 的愚人。

戴尔考虑剥离 VMware 部门,最早明年 9 月前完成

戴尔公司首席执行官迈克尔·戴尔在 2016 年策划了有史以来最大规模的技术收购,以 670 亿美元收购了存储公司 EMC 公司。这笔交易给戴尔带来了对 VMware 的所有权,但同时也带来了沉重的债务负担。在与 EMC 达成交易后的几年里,VMware 强劲的盈利能力并没能直接有助于戴尔的债务偿还。

来源:新浪科技

拍一拍:抛开负债包袱的 VMware 或许能更快的前行,继续领跑虚拟化技术发展。

Fedora 33 桌面版本默认使用 Btrfs 文件系统

此项变更只适用于 Fedora 33 桌面版本,比如 Fedora Workstation。

事实上,建议 Fedora 默认使用 Btrfs 文件系统的提案十年前就已提出,不过直到将于今年秋季发布的 Fedora 33 才得以实现。Fedora 此举让它与 openSUSE/SUSE 一起成为少数几个默认使用 Btrfs 的 Linux 发行版之一。

来源:开源中国

拍一拍:感觉 Ext 文件系统家族已经有些发展不动了。

在我们的 20 个使用开源提升生产力的系列的第十篇文章中,使用 Rainbow Stream 跟上你的 Twitter 流而无需离开终端。

去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。

通过 Rainbow Stream 跟上Twitter

我喜欢社交网络和微博。它快速、简单,还有我可以与世界分享我的想法。当然,缺点是几乎所有非 Windows 的桌面客户端都对是网站的封装。Twitter 有很多客户端,但我真正想要的是轻量、易于使用,最重要的是吸引人的客户端。

 title=

Rainbow Stream 是好看的 Twitter 客户端之一。它简单易用,并且可以通过 pip3 install rainbowstream 快速安装。第一次运行时,它将打开浏览器窗口,并让你通过 Twitter 授权。完成后,你将回到命令行,你的 Twitter 时间线将开始滚动。

 title=

要了解的最重要的命令是 p 暂停推流、r 继续推流、h 得到帮助,以及 t 发布新的推文。例如,h tweets 将提供发送和回复推文的所有选项。另一个有用的帮助页面是 h messages,它提供了处理直接消息的命令,这是我妻子和我经常使用的东西。还有很多其他命令,我会回头获得很多帮助。

随着时间线的滚动,你可以看到它有完整的 UTF-8 支持,并以正确的字体显示推文被转推以及喜欢的次数,图标和 emoji 也能正确显示。

关于 Rainbow Stream 的最好功能之一就是你不必放弃照片和图像。默认情况下,此功能是关闭的,但是你可以使用 config 命令尝试它。

config IMAGE_ON_TERM = true

此命令将任何图像渲染为 ASCII 艺术。如果你有大量照片流,它可能会有点多,但是我喜欢。它有非常复古的 1990 年代 BBS 感觉,我也确实喜欢 1990 年代的 BBS 场景。

你还可以使用 Rainbow Stream 管理列表、屏蔽某人、拉黑某人、关注、取消关注以及 Twitter API 的所有其他功能。它还支持主题,因此你可以用喜欢的颜色方案自定义流。

当我正在工作并且不想在浏览器上打开另一个选项卡时,Rainbow Stream 让我可以留在终端中。


via: https://opensource.com/article/20/1/tweet-terminal-rainbow-stream

作者:Kevin Sonney 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如果你想知道大家对某件事情的看法,Twitter 是最好的地方了。Twitter 是观点持续不断的涌现出来的地方,每秒钟大概有 6000 条新 Twitter 发送出来。因特网上的发展很快,如果你想与时俱进或者跟上潮流,Twitter 就是你要去的地方。

现在,我们生活在一个数据为王的时代,很多公司都善于运用 Twitter 上的数据。根据测量到的他们新产品的人气,尝试预测之后的市场趋势,分析 Twitter 上的数据有很多用处。通过数据,商人把产品卖给合适的用户,收集关于他们品牌和改进的反馈,或者获取他们产品或促销活动失败的原因。不仅仅是商人,很多政治和经济上的决定是在观察人们意见的基础上所作的。今天,我会试着让你感受下关于 Twitter 的简单 情感分析,判断这个 Twitter 是正能量、负能量还是中性的。这不会像专业人士所用的那么复杂,但至少,它会让你知道挖掘观念的想法。

我们将使用 NodeJs,因为 JavaScript 太常用了,而且它还是最容易入门的语言。

前置条件:

  • 安装了 NodeJs 和 NPM
  • 有 NodeJs 和 NPM 包的经验
  • 熟悉命令行。

好了,就是这样。开始吧。

开始

为了你的项目新建一个目录,进入这个目录下面。打开终端(或是命令行)。进入刚创建的目录下面,运行命令 npm init -y。这会在这个目录下创建一个 package.json 文件。现在我们可以安装需要的 npm 包了。只需要创建一个新文件,命名为 index.js 然后我们就完成了初始的编码。

获取推文

好了,我们想要分析 Twitter ,为了实现这个目的,我们需要以编程的方式访问 Twitter。为此,我们要用到 twit 包。因此,先用 npm i wit 命令安装它。我们还需要注册一个 App,以通过我们的账户来访问 Twitter 的 API。点击这个 链接,填写所有项目,从 “Keys and Access Token” 标签页中复制 “Consumer Key”、“Consumer Secret”、“Access token” 和 “Access Token Secret” 这几项到一个 .env 文件中,就像这样:

# .env
# replace the stars with values you copied
CONSUMER_KEY=************
CONSUMER_SECRET=************
ACCESS_TOKEN=************
ACCESS_TOKEN_SECRET=************

现在开始。

用你最喜欢的代码编辑器打开 index.js。我们需要用 npm i dotenv 命令安装 dotenv 包来读取 .env 文件。好了,创建一个 API 实例。

const Twit = require('twit');
const dotenv = require('dotenv');

dotenv.config();

const { CONSUMER_KEY
      , CONSUMER_SECRET
      , ACCESS_TOKEN
      , ACCESS_TOKEN_SECRET
      } = process.env;

const config_twitter = {
    consumer_key: CONSUMER_KEY,
    consumer_secret: CONSUMER_SECRET,
    access_token: ACCESS_TOKEN,
    access_token_secret: ACCESS_TOKEN_SECRET,
    timeout_ms: 60*1000
};

let api = new Twit(config_twitter);

这里已经用所需的配置文件建立了到 Twitter 上的连接。但我们什么事情都没做。先定义个获取推文的函数:

async function get_tweets(q, count) {
    let tweets = await api.get('search/tweets', {q, count, tweet_mode: 'extended'});
    return tweets.data.statuses.map(tweet => tweet.full_text);
}

这是个 async 函数,因为 api.get 函数返回一个 promise 对象,而不是 then 链,我想通过这种简单的方式获取推文。它接收两个参数 qcountq 是查询或者我们想要搜索的关键字,count 是让这个 api 返回的推文数量。

目前为止我们拥有了一个从 Twitter 上获取完整文本的简单方法。不过这里有个问题,现在我们要获取的文本中可能包含某些连接或者由于转推而被截断了。所以我们会编写另一个函数,拆解并返回推文的文本,即便是转发的推文,并且其中有链接的话就删除。

function get_text(tweet) {
    let txt = tweet.retweeted_status ? tweet.retweeted_status.full_text : tweet.full_text;
    return txt.split(/ |\n/).filter(v => !v.startsWith('http')).join(' ');
 }

async function get_tweets(q, count) {
    let tweets = await api.get('search/tweets', {q, count, 'tweet_mode': 'extended'});
    return tweets.data.statuses.map(get_text);
}

现在我们拿到了文本。下一步是从文本中获取情感。为此我们会使用 npm 中的另一个包 —— sentiment。让我们像安装其他包那样安装 sentiment,添加到脚本中。

const sentiment = require('sentiment')

sentiment 用起来很简单。我们只用把 sentiment 函数用在我们想要分析的文本上,它就能返回文本的相对分数。如果分数小于 0,它表达的就是消极情感,大于 0 的分数是积极情感,而 0,如你所料,表示中性的情感。基于此,我们将会把推文打印成不同的颜色 —— 绿色表示积极,红色表示消极,蓝色表示中性。为此,我们会用到 colors 包。先安装这个包,然后添加到脚本中。

const colors = require('colors/safe');

好了,现在把所有东西都整合到 main 函数中。

async function main() {
    let keyword = \* define the keyword that you want to search for *\;
    let count = \* define the count of tweets you want *\;
    let tweets = await get_tweets(keyword, count);
    for (tweet of tweets) {
        let score = sentiment(tweet).comparative;
        tweet = `${tweet}\n`;
        if (score > 0) {
            tweet = colors.green(tweet);
        } else if (score < 0) {
            tweet = colors.red(tweet);
        } else {
            tweet = colors.blue(tweet);
        }
        console.log(tweet);
    }
}

最后,执行 main 函数。

main();

就是这样,一个简单的分析推文中的基本情感的脚本。

\\ full script
const Twit = require('twit');
const dotenv = require('dotenv');
const sentiment = require('sentiment');
const colors = require('colors/safe');

dotenv.config();

const { CONSUMER_KEY
      , CONSUMER_SECRET
      , ACCESS_TOKEN
      , ACCESS_TOKEN_SECRET
      } = process.env;

const config_twitter = {
    consumer_key: CONSUMER_KEY,
    consumer_secret: CONSUMER_SECRET,
    access_token: ACCESS_TOKEN,
    access_token_secret: ACCESS_TOKEN_SECRET,
    timeout_ms: 60*1000
};

let api = new Twit(config_twitter);

function get_text(tweet) {
    let txt = tweet.retweeted_status ? tweet.retweeted_status.full_text : tweet.full_text;
    return txt.split(/ |\n/).filter(v => !v.startsWith('http')).join(' ');
 }

async function get_tweets(q, count) {
    let tweets = await api.get('search/tweets', {q, count, 'tweet_mode': 'extended'});
    return tweets.data.statuses.map(get_text);
}

async function main() {
    let keyword = 'avengers';
    let count = 100;
    let tweets = await get_tweets(keyword, count);
    for (tweet of tweets) {
        let score = sentiment(tweet).comparative;
        tweet = `${tweet}\n`;
        if (score > 0) {
            tweet = colors.green(tweet);
        } else if (score < 0) {
            tweet = colors.red(tweet);
        } else {
            tweet = colors.blue(tweet)
        }
        console.log(tweet)
    }
}

main();

via: https://boostlog.io/@anshulc95/twitter-sentiment-analysis-using-nodejs-5ad1331247018500491f3b6a

作者:Anshul Chauhan 译者:BriFuture 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出