IP,操作系统OS,国家,浏览器信息GIF展示图 发布于 三月 24, 2021 图片URL:https://www.wieistmeineip.de/ip-address/ 图片URL:https://www.mzwu.com/pic/20070121/ipimg/ipimg.asp 评论
Matomo API 官方接口详情 发布于 六月 24, 2021 API接口 你可以通过调用Matomo的分析接口将数据集成到其他应用中去。这些数据包括访问数,页面网址、网页标题、用户设置、搜索引擎、关键词、推荐网站、用户浏览器 其中的请求参数和返回值需要对照官方手册来 未定义 ## API `未定义` ## Annotations `未定义` ## Contents `未定义` ## CoreAdminHome `未定义` ## CustomDimensions `未定义` ## CustomJsTracker `未定义` ## CustomVariables `未定义` ## DBStats `未定义` ## Dashboard `未定义` ## Events `未定义` ## Feedback `未定义` ## Goals `未定义` ## ImageGraph `未定义` ## LanguagesManager `未定义` ## Login `未定义` ## Marketplace `未定义` ## MobileMessaging `未定义` ## PagePerformance `未定义` ## Provider `未定义` ## SEO `未定义` ## SitesManager `未定义` ## TagManager `未定义` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 Actions 动作(行为) Actions.get 访客分析-概述-访客概览(右边一列) Actions.getPageUrls 行为-页面 Actions.getPageUrlsFollowingSiteSearch Actions.getPageTitlesFollowingSiteSearch Actions.getEntryPageUrls 行为-进入页面 Actions.getExitPageUrls 行为-退出页面 Actions.getPageUrl 行为-通过页面的PageUrl查看详情(获取单条记录) Actions.getPageTitles 行为-页面标题 Actions.getEntryPageTitles 行为-页面标题-进入页面标题 Actions.getExitPageTitles 行为-页... 阅读全文
Sniper 一个轻量级 go 业务框架的思考 发布于 三月 01, 2021 Sniper 是我为部门设计的轻量级 go 业务框架。经过两年的平稳运行,至少在一定程度上印证了我当初的一些见解。现整理出来供大家参考。 涛叔:Sniper框架两周年回顾 项目源码可以从 github 获取 bilibili/sniper ? Sniper 起源于一项新业务。在转岗之前,我一直在 L 部门写 PHP 代码,遇到过如下问题: 基于 TCP 的 RPC 协议,我们都称之为 Weisai-RPC 手工维护 RPC 文档,难以及时更新 手写代码处理 RPC 入参,难以保证参数类型,如数字 1 和字符串 "1" 的区别 无法方便地查询一个请求对应的所有日志 服务拆分得很细,难以进行调用链路追踪 使用 JSON 做为配置,难改难认 难以监控服务运行状态 代码分层标准不统一 大约在 2018 年的六月底,我得知要去新的 C 部门做新业务。没有任何历史包袱,我马上着手准备,希望能全方位的解决上面提到的问题。 Go 语言 首先要解决语言选择的问题。PHP 是最熟悉的,但从过去的经验来看,无论从性能还是从代码可维护性方面考虑,PHP 都不是一个好的选择。当时有两种选择,一个是 Java,另一个是 go。平心而论,Java 是要比 Go 要成熟得多。但 Go 更加简单轻便,从 PHP 过渡成本更低。而且当时公司正在推动用 Go 重写原有的 Java 项目。自然就选了 Go。 我两年后又写了一管关于 go 与 php 对比的文章,大家可以参考一下 涛叔:go 是更好的 php RPC 协议 有了语言,接下来就要确定通信协议。首先不要使用 REST 风格接口。 REST 中看不中用。REST 的核心是资源和状态,所有的变更都对应状态的转变。 对于简单的场景,REST 看似完美,如: GET /user/123 表示查询。 但如果是发送一条短信呢?一种方案是使用 POST /sms 表示创建一条 短信资源 ,另一种方案则是 POST /sms:send 直接发送。 但不管哪种方式,都不如 RPC 调用直观,其原因有二: 一是 http 的方法(GET, POST, PUT, DELETE 等)太少,基本都是面向静态资源的,表达能力有限 二是将业务过程转成资源状态变化本身就比较烧脑,而且存在无法转化的场景 REST 还有一个比较大的问题就是 u... 阅读全文
买了车以后才知道的一些事情 发布于 十月 15, 2021 1.盲区,驾校通常不教,很多人都是听别人说什么AB柱盲区,但是从来没有认真去了解过盲区的形成原理,市区的交通事故,很大一部分是因为盲区导致的,盲区可不是只有AB柱,弯道、路口、天气、路况都是盲区变化的条件,在行车过程中是会动态变化的,不要做撞车了连为什么撞都不知道的人。开车的观察如果只看后视镜,迟早出事。而且不止你要注意你的盲区,也要注意尽量不要去别人的盲区里面转悠。 2.路权,路权概念驾校通常也不讲,路权可以说是一切交规的基础,学习路权的概念,然后再去读道交法,相信你会对交规以及驾驶技巧有不一样的认识。 3.地板油,不管是什么车,不同模式,不同档位的地板油,自己找个场地试试,不要开了几年车,连自己车地板油什么感觉都不知道,关键时候能救命,还有ABS打脚的感觉,相信很多人都没有踩出来过,去试试紧急刹车,做麋鹿测试。感知不同的道路条件下,轮胎抓地力的区别。以上,不知道有多少人去逼过自己车辆的极限,一定要知道自己车性能实际表现,不是停留在纸面数据,反正我知道没有踩出过ABS的人第一次遇到打脚是会慌的。有条件的,把esp关了,漂移控车也感受一下。借别人的车同理。 4.心平气和 5.防御性驾驶是门学问,只要你坐在驾驶位上,请把路上所有人预设神经病。 6.随车装备最重要的是反光器材、灭火器、工具箱 7.市区最怕鬼探头,高速最怕追尾 8.丢车保帅,人才是最重要的,特别是高速事故。 9.气囊只有正确方式弹出才能救人,所以什么气囊上放东西的,摆挂件的,打方向盘姿势不对的,都是自废武功,你还不如买不带气囊的车,即便是形成肌肉记忆的习惯,也要去改,因为气囊上摆东西把头骨打碎的,打方向姿势不对把手崩残废的多了去了。 10.儿童座椅很重要 11.珍爱生命、远离大车 12.每天十分钟,卖车坐家中 13.红绿灯不要挂P档,特别是傍晚,至于为什么,动动你的小脑筋,我就一句话,P档设计出来就是叫你去停车场用的,不是叫你在大马路上用的。 14.看得多远,才开多快 15.开灯是为了让别人看见你,最傻逼的是晚上在路上不开灯还没有反光标的电动车 16.永远有人闯红灯,特别是凌晨,过路口和人行道一定要减速。 17.新手们,出弯和变道要加油,即便你不加油,千万别刹车。 18.安全车速是相对的,不安全车速是绝对的。 19.路边停了一排车的,从旁边过车速不要超过30 20.路边停车超过5分钟,尽量下车绕车检查或者... 阅读全文
多少人看完AV,拿纸巾只为擦泪? 发布于 十二月 07, 2020 通常来说,人们打开 成人电影 ,只是为了在孤寂的夜里,制造一场从身体到心灵的狂欢。 但总有人能把血液从下体倒逼回脑中,任由自己被片中人物 牵动心弦和泪腺 。 在浩如烟海的成人片中,日本电影是一座催泪富矿,而在这座富矿中, 《老李的故事》 则是一座绕不过的大山。 老李是一名 生物教师 ,人到中年仍穷且孤寡,只有不断后移的发际线见证着他对教育事业的付出。 无奈顽劣的学生目无尊长,总是上演一出以下克上,通过 戏弄老师 来自行堵塞知识传输的通道。 这群恶徒搅得老李心灰意冷,放弃了最爱的 教育事业 ,颓废在家做死宅。 老李的生活本来如一潭死水般再无波澜,直到一个女学生如流星撞入他的生活,彻底改变了他的 命运走向 。 她用勤恳好学的态度,唤起他 身为人师的尊严 。 她用 美好的肉体 ,为他疲惫的身躯与萎靡的灵魂注入一针兴奋剂。 原本空旷冰冷的屋内,突然变得 充实且温暖 起来。 好景不长,女孩的父亲突然找上门来,质问女孩为何浪费宝贵的补习时间,去找老李学习分数占比较少的副科生物,并威胁要把老李 私设补习班 的行为公之于众。 老李的春天刚来就变成了冬天, 寒屋只影孤灯,无处可度余生 。 就在老李独自颓废时,形同虚设的门铃再次被按响,梦中的她再次 闪亮登场 ,失而复得的欣喜让老李失了庄重与矜持,二人又是一番 抵死缠绵 。 就在他们一番云雨结束沉沉睡去时,一只愤怒的铁拳砸响了门板,那是她的父亲来找寻 离家出走 的她。 嘈杂的拍门声中,两人在屋内相拥而眠,他们小指被一根 红线 紧紧连结,仿佛象征着这段阴暗角落中生长的爱情,对世俗礼法的 坚定反抗 。 影片转场中多次出现的蜥蜴,既暗合了老李生物老师的身份,也突出自蛮荒时代传承下来的 朴素价值观 : 人不是蜥蜴这样的冷血动物,只有彼此抱团,两具身躯才能同时温暖。 这是暗黑版《罗密欧与朱丽叶》,背德版《梁祝》,纯爱程度不输岩井俊二,故事性与村上春树比肩。 把一段无比真挚的感情,放置在错误的时间地点 这一故事模式,不仅造就了《老李的故事》,还把 《人造人之恋》 捧上神坛。 情场失意的宅男小强,偶然间网购了一个 人造人娃娃明步 ,作为自己释放欲望的工具。 但随着和明步的亲密接触,小强对明步产生了好感,明步原本如同 机器人 ,如今个性也变得更加鲜活。 好景不长,小强为了和女友 破镜重圆 ,把明步向损友双手奉上。 把明步当做筹码,却情场再次... 阅读全文
万物选购指南:层次分析法解决选择困难 发布于 七月 23, 2021 (一)层次分析法及其原理 层次分析法 (Analytic hierarchy process,简称 AHP 法) 是美国运筹学家 T.L.Saaty 于 1970 年代提出的一种 多目标决策分析方法,通过对定性问题的定量化分析来解决复杂的多目标决策问题。 所谓 定性问题 ,通常是指难以通过数量计算方法来解决的问题,比如谈恋爱、选电脑、风险投资、健身房的选择等,这些问题所涉及的影响条件太多,每个人对于各种影响因素的看重程度不同,因此无法使用统一标准获得一个放之四海而皆准的答案。可以说,我们日常生活中绝大多数问题都是定性问题,只不过,在日常场景中,我们通常可以凭借自身的经验做出选择,并不需要进行复杂的理性计算来获得答案。而 定量化方法 ,则是指通过数理计算过程获取答案的方法,简单讲就是算术方法。 多目标决策问题 更容易理解,就是上文所讲的 「多重趋避冲突」 的典型场景,即同时存在多个备选项,每个备选项均具有优点和缺点,我们需要在其中选出最佳的或者最适合自己的选项。 一般而言,层次分析的过程包含以下几个步骤: 对构成决策问题的各种要素建立多级递进的结构模型; 对同一等级(层次)的要素以上一级要素为准则进行两两比较,根据评定尺度确定其相对重要程度,并据此建立判断矩阵; 通过一定的计算,确定各要素的相对重要度; 通过综合重要度的计算,对各种替代方案进行优劣比较并排序。 上面四个步骤,我将其精简为以下 12 个字并做简单介绍: 定层级、互比较、定权重、排顺序 1. 定层级 定层级就是确定总目标、决定目标的因素、备选项之间的层次关系和隶属关系 。如下图所示,我们可以将某一复杂的定性决策问题分为目标层、准则层、备选项三个层次。 目标层 是我们想要选出的最佳项目,通常为一至多项产品或方案; 准则层 中,我们需要确立影响目标的重要因素,由于影响因素众多,通常需要对其进行归类,进而整理出几项包含绝大多数影响因素的大类; 备选项 代表我们可供选择的产品或方案,我们目标层将在备选项中获得。通过对层级进行划分,我们可以将定性问题条理化、逻辑化,化繁为简,便于后续的定量计算。 2. 互比较 互比较即确定将准则层各因素及备选项在各因素中相对重要程度进行对比,以此来确定其对上层的相对重要顺序 。那么,如何进行比较呢?比较的前提是要拥有一个标准的尺度,而这个尺度还必须能相对准确地反映出各因素重... 阅读全文
QNAP 威联通 NAS的个人使用经验(使用须知) 发布于 七月 21, 2021 一、家庭使用,不要用Raid!没有特殊需要,不要用存储池! 家庭使用,不要用存储池,不要用Raid!不要用Raid1!不要用Raid5!不要用Raid6!重要的事情说n遍。 Raid的设计初衷是为了 提高系统可用性 ,保证部署在服务器上的业务系统在存储出现故障时,可以做到系统不下线,在线完成存储的修复! 虽然可以在某些层面提高数据的安全性!但在硬盘故障后做数据恢复时,带来的后续问题会更多! 家用2-8盘位居多,一般多用Raid1和5。Raid5的安全性争议由来已久,那么Raid1呢? 结论还是没有必要。 以4盘位为例,文字模拟一下几种使用情况: 1、4块4T,组Raid5,(注,Raid5和存储池需搭配使用)获得12T空间; 优点:存储空间连续,单文件夹即可存储12T内的资源; 缺点:磁盘性能会受到影响;在使用tr充当下载机的情况下,全盘24小时持续工作,损失全部硬盘寿命; 坏掉一块硬盘后; 如果恢复Raid,根据使用空间和零碎文件的多少,大概需要1-4天的时间,这期间,所有硬盘几乎火力全开。由于4块硬盘一般同时购买又是同批次,1块硬盘由于读写过多导致故障时,其他3块磁盘的寿命也差不太多。加上连续读写高发热,高震动,在这个情况下又要连续工作n久,如果这时候再有一块硬盘出现故障,或者遇到NAS硬件故障或者断电,数据就完蛋了。 数据完全损毁这个后果你可以承受的了吗?我反正不行。 2、4块4T,使用存储池,获得16T的连续存储空间。 故障后,你根本就不会知道你损失掉了哪些数据。 家用请直接Pass掉这种使用方式。 3、推荐的方式: 全部无脑使用 静态磁盘分区 ,也有叫Basic分区的,QTS 4.3后叫静态卷 ,都是一个意思,就是没那么多花活儿和功能,每一块硬盘自成体系,且拥有最高的性能。 建议先安装一块硬盘,把所有需要的APP装完之后,再安装其他的硬盘。(QTS4.3后可选APP安装位置,但还是建议这样做)。并且,如果使用下载功能,请将下载目录设置在这块硬盘。 其他的硬盘,建立多个文件夹, 仅用于 存储数据。 这样一来,不论是下载时,还是调用APP时,大多数情况,仅仅这一块硬盘在工作。其他的硬盘会处于休眠模式。 很多人说威联通现在的系统就无法休眠。我没办法说什么。只能说,根据我个人的使用经验看。我所认为的休眠模式,硬盘是无法读写的。在你访问其他盘上的共享目录时,可以明显... 阅读全文
远离你身边的煤气灯人 发布于 一月 04, 2022 今天讲个煤气灯人的故事,这可不是一个关于张牙舞爪的喷火小木偶的恐怖故事。 我想说的远比恐怖故事惊悚多了。 它毁人心智,杀人于无形。 何为煤气灯人?如果你感觉这个词很陌生,那么朋友,你听说过PUA吗? PUA(Pick-up Artist,把妹达人),一个近年来广为人知的群体,与其相关的理论亦称为“泡学”。 大量不善交际的尝试者,几经辗转购入高价PUA课程,并将其珍若江湖两性秘笈。但同时在更多人眼中,PUA群体也沦为过街之鼠,人人喊打。甚至还有人故意在人际交往中,突显自己的直男直女本性,与“套路”二字划清界限。 但你真以为自己能摆脱PUA吗——Nope,甚至也许 你就是正在进行“情感操纵”的PUA本A 。 01. PUA,其实就是一种煤气灯人 现今意义上的PUA,上可追溯至1944年,由美国导演乔治·库克执导的一部惊悚片 《煤气灯下》(Gaslight) 中的主角安东。 在电影中,钢琴师安东(CharlesBoyer饰)为了将妻子宝拉(Ingrid Bergman饰)所要继承的大额财产据为己有,一面将自己伪装成潇洒体贴的丈夫,另一面又不断使用各种心理战术,联合家中的女佣企图将妻子逼疯。 在丈夫缜密的心理操纵下,宝拉逐渐变得神经兮兮,怀疑现实、质疑自己,最后在精神上几乎完全依附于安东。 这种试图破坏他人对现实的感知的情感操纵,也因该电影而得名为 Gaslighting(煤气灯操纵) 。下面我挑选了几个经典的Gaslighting片段让大家品品: Part 1 信息封锁:在一段时间内不断重复强调某一信息 安东和宝拉新婚满三个月时,外出去伦敦塔游玩。出门前安东送给妻子一枚小巧的白色胸针,声称是母亲去世前留给他的,并嘱咐宝拉把它收好。 此时安东略显刻意地强调了一句: “你可能会弄丢,你知道的,你经常丢三落四” 。这是电影中安东第一次对宝拉实施Gaslighting,也是宝拉初步对自己产生怀疑。 但是在二人离去之后,两位女佣之间的对话又再次佐证了,宝拉从未体现出任何异常。但是男主人安东,却不断向他们传输“女主人生病了”这一信息。 如果说此时,仆人们还对女主人生病一事尚有所怀疑。那么接下来的事情,就令他们对于这一言论深信不疑了。 当天的游玩结束后,安东便以饰物常年未佩戴、需要修理为由,向宝拉索要胸针。由于安东从一开始就并未将胸针放入宝拉的手包,而是偷偷将其藏在手心转移至别处,... 阅读全文
如何防止Cloudflare CDN背后的图片被盗连(Hotlink Protection)? 发布于 十月 14, 2021 「Hotlink Protection」(直接链接保护)是经营网站经常需要去注意的一块,但为什么我们会需要「Hotlink Protection」呢?身为图文并茂的网络文章作家,最担心得就是自己的文章被别人整篇连文带图地拷贝粘贴到其它地方了。此时如果图片有套用「Hotlink Protection」的话,就可以让被盗用的图片在其它网站上「不被正常显示」出来,如此一来,就能使其它误入盗文页面的访客可以知道该篇文章是篇被盗用的文章。不同的网站架构有不同的「Hotlink Protection」的设置方式,如果您的网站有打开Cloudflare的CDN服务的话,可以参考这篇文章,来实现「Hotlink Protection」的功能。 我的网站服务器是用Nginx或Apache,难道不能直接对它们做设置吗? 很遗憾,只要我们有激活Cloudflare的CDN服务,就无法有效地通过自己的服务器程序来设置Hotlink Protection。这是因为网页浏览器在打开您网站的图片时,会去链接Cloudflare的CDN服务器,而非我们自己的服务器,所以就算我们有在自己的服务器上制作Hotlink Protection的功能,也根本不会被触发到。 既然有Cloudflare CDN,为什么还要Hotlink Protection?被盗连的图,其流量不是不会算在我们头上吗? 的确,有了Cloudflare CDN之后,就算图片被盗连,它主要也还是会去吃Cloudflare CDN服务器的流量。但是,您真的愿意让您文章中的图片原封不动地在盗文网站上显示出来吗?所以还是设置一下Hotlink Protection吧! Cloudflare内置的Hotlink Protection开关 Cloudflare的控制后台中,其实就有提供一个一键套用Hotlink Protection的开关,只要打开来,就可以让有激活CDN功能的网域拥有Hotlink Protection的功能。这个开关藏在Cloudflare控制后台的「Scrape Shield」分页中。 这个Hotlink Protection一旦打开,整个有打开Cloudflare CDN服务的网域(包含子网域)下的图片链接,就只能在这整个网域(包含子网域)下打开,否则的话会直接回传HTTP的403... 阅读全文
Scrum实践指南:一个可运行的 Scrum是怎样的 发布于 十一月 20, 2020 Scrum需要实践和专注,只有持续不断地付出努力,才能达到新的状态。 在目前的互联网公司,敏捷(Agile)的概念已经有相当的普及,人人都在谈,似乎不谈敏捷就不那么互联网了。几乎所有的互联网公司都不同程度的实施了敏捷。 采用敏捷开发的方法也有很多,主要包括极限编程(XP)、Scrum、水晶方法(Crystal Methods)、自适应软件开发(ASD)、特性驱动开发(FDD)、动态系统开发(DSDM)、轻量级RUP、测试驱动开发(TDD)等等。而在众多的敏捷开发方法中,尤以实施Scrum比较流行。 对于我本人来说,接触Scrum有几年的时间了。在软件开发项目中做了一些Scrum的实践,闲暇时间也经常与业界Scrum同仁们沟通交流一些心得;同时,也始终在关注业界对于Scrum的一些新的认识和实践的书籍材料。在这一过程中,也促使我对Scrum有了更深刻的理解。 结合我的Scrum实践, 本文主要从Scrum的认识,Scrum的实施过程以及实施Scrum带来的变化几个方面进行分享,解读一个可运行的 Scrum是怎样的。 希望能给大家带来不一样的认识,并对Scrum实践有所帮助。 一、Scrum的认识 首先来了解一下Scrum的定义。 Scrum 是一个用于开发和维护复杂产品的框架,是一个增量的、迭代的开发过程。 在这个框架中,整个开发过程由若干个短的迭代周期组成,一个短的迭代周期称为一个Sprint,每个Sprint的长度是2到4周。 在Scrum中,使用产品Backlog来管理产品的需求。产品backlog按照实现的优先级进行排序,以商业价值作为排序的主要原则。在Sprint中,Scrum团队从产品Backlog中挑选最高优先级的需求进行开发。挑选的需求在Sprint计划会议上经过讨论、分析和估算得到相应的任务列表,称它为Sprint backlog。当Scrum团队完成Sprint backlog列表中的所有任务时,本次Sprint结束,进入下一个Sprint迭代周期。 Scrum有很大的价值,然而在有些公司推行Scrum却困难重重,有些人说Scrum没有什么实质性的作用,然并卵。为什么会有这样的认识呢?深入分析,原因主要有: 项目团队缺乏对敏捷的正确认识,单纯的认为敏捷就是快,就是追赶进度,就可以不受任何制度约束。大家可能听说过这样的对联,... 阅读全文
小程序框架全面测评 发布于 十月 28, 2019 最近前端届多端框架频出,相信很多有代码多端运行需求的开发者都会产生一些疑惑:这些框架都有什么优缺点?到底应该用哪个? 作为 Taro 开发团队一员,笔者想在本文尽量站在一个客观公正的角度去评价各个框架的选型和优劣。但宥于利益相关,本文的观点很可能是带有偏向性的,大家可以带着批判的眼光去看待,权当抛砖引玉。 那么,当我们在讨论多端框架时,我们在谈论什么: 多端 笔者以为,现在流行的多端框架可以大致分为三类: 1. 全包型 这类框架最大的特点就是从底层的渲染引擎、布局引擎,到中层的 DSL,再到上层的框架全部由自己开发,代表框架是 Qt 和 Flutter。这类框架优点非常明显:性能(的上限)高;各平台渲染结果一致。缺点也非常明显:需要完全重新学习 DSL(QML/Dart),以及难以适配中国特色的端:小程序。 这类框架是最原始也是最纯正的的多端开发框架,由于底层到上层每个环节都掌握在自己手里,也能最大可能地去保证开发和跨端体验一致。但它们的框架研发成本巨大,渲染引擎、布局引擎、DSL、上层框架每个部分都需要大量人力开发维护。 2. Web 技术型 这类框架把 Web 技术(JavaScript,CSS)带到移动开发中,自研布局引擎处理 CSS,使用 JavaScript 写业务逻辑,使用流行的前端框架作为 DSL,各端分别使用各自的原生组件渲染。代表框架是 React Native 和 Weex,这样做的优点有: 开发迅速 复用前端生态 易于学习上手,不管前端后端移动端,多多少少都会一点 JS、CSS 缺点有: 交互复杂时难以写出高性能的代码,这类框架的设计就必然导致 JS 和 Native 之间需要通信,类似于手势操作这样频繁地触发通信就很可能使得 UI 无法在 16ms 内及时绘制。React Native 有一些声明式的组件可以避免这个问题,但声明式的写法很难满足复杂交互的需求。 由于没有渲染引擎,使用各端的原生组件渲染,相同代码渲染的一致性没有第一种高。 3. JavaScript 编译型 这类框架就是我们这篇文章的主角们: Taro 、 WePY 、 uni-app 、 mpvue 、 chameleon ,它们的原理也都大同小异:先以 JavaScript 作为基础选定一个 DSL 框架... 阅读全文
评论