实习月报(上)

大暑已至,实习的日子也过去了一半。在短短的四周中,接触了不少新技术,也总结出了许多经验。

  1. 思想理论对于编码实践有着极其重要的指导作用。

    月初逛论坛时看到一条回复:

    标题:前端的技术更新换代速度是不是有点快? - V2EX
    @xuanbg:MVC 模式还是 76 年提出来的呢,前端的同学用上才几年。。。

    大概十多年前,互联网还没有前端开发者这个概念。由于当时网站基本使用表格布局或 Flash,而不是如今的 DIV + CSS 的布局,前端开发工作基本由后端完成。许多站点通过将前端代码硬编码于后端代码,配合 iframe 和后端语言的 include 语句,构造标准的表格式单页。

    Web 2.0 技术之后,UGC 内容逐渐成为主流,前端技术也不再局限于简单的表格布局,各种技术栈百花齐放,诞生了 jQuery、Dojo 等一系列开源 JavaScript 框架。CSS3 与 HTML5 标准的出现也极大地推动了前端技术栈的发展,人们开发出各种炫酷的交互动画,甚至可以通过 WebGL 实时渲染 3D 模型。Bootstrap 等前端 UI Kit 的出现则将前段开发者们从手写代码中拯救了出来,模块化的响应式布局成为主流,Web 前端页面的基本构建逐渐变得简易上手,由此也催生了一大批前端培训班。

    在我看来,一个优秀的前端工程师除了掌握各种 Web 技术与开发框架之外,还需要具有一定的审美能力与设计理念。对于 to B 的产品可能不需要考虑太多用户体验上的需求,但是如果是面向普通用户,用户体验很大程度上影响了用户留存与活跃时间。

  2. 慢下来,提高代码质量。

    没经验没能力的软件开发团队一开始就冲刺/加班加点地加新功能,几个月后就慢下来了,所有时间都在修 bug,没精力去加新功能。
    —— 软件开发过程中,先慢下来,才能将来跑得更快

    前期开发过程中缺少 Code Review 及自测等评估环节,加上一些不合理的产品设计,我们耗费了大量的时间在变更需求和寻找代码缺陷上。和一位曾在某一线手机厂商工作的朋友聊起工作流,其公司生产环境代码小版本一月一更,大版本甚至一年才发布一次。当然,处于开发期的项目迭代本就应该比维护期的项目快许多,但是如果不使用 CI/CD 以及自动化测试等解决方案,后期推进将变得非常困难。

  3. 预留数据审查中间件,做好安全措施。

    如果发现一个产品在安全(包括但不限于权限管理)方便不讲究了,说明他们内部在为 KPI 赶进度了。因为安全领域是花费最大却看不到成果的地方。
    —— [email protected]老毒师

    2018 年是区块链的风口,但不知有多少交易所和私链因为代码缺陷所致的安全问题而崩盘,无论是运营者还是用户都损失惨重。但就目前看来,各个项目(除了互联网金融方向)的开发过程中仍然是业务线优先,安全、风控最后。在我们的项目初期,前端未考虑对用户做防呆设计以及数据预过滤,后端也基本未对接口数据做鉴权或合法性校验。作为一个暴露在公网的在线服务,是非常危险的。

  4. 产品需求一定要明确,做好任务进度可视化。

    在前段时间的课设中,我们尝试应用了 Github Kanban 作为敏捷开发管理工具,对项目进度进行把控。作为一个辅助工具,它并不具有什么魔幻能力,但却能直观地掌控项目的功能粒度上的开发进度,优化需求下发流程。使用 IM(如微信、蓝信等即时聊天工具)及电子邮件作为需求下发方式的形式是一个没有缓冲区的 [生产者-消费者] 问题。通过引入看板作为缓冲区,开发者完成手头任务后即可查看后续需求,产品经理也无须为此在群里 at 全体成员,打断所有人正在处理的事情。这不仅可以避免开发人员工作时间不饱和,还有助于提升开发效率。

浅析 WLAN 漫游技术

Introduction

要想理解 WLAN 漫游技术,首先要区分 SSID、BSSID 与 ESSID。

  • SSID(Specific Service Set Identifier):一个逻辑上的无线网络热点的名称,例如 CMCCChinaNet ,会显示在客户端的 WLAN 列表中,用来表示不同的无线网络。
  • BSSID(Basic Service Set Identifier):基本服务集,是无线网络的基本单元。无线接入点(Access Point)的硬件接口 MAC(Medium Access Control)地址。当多个 AP 组成集群(Cluster)时,一个 SSID 即对应了多个 BSSID。对于 Android 设备,在开发者选项中开启“开启 WLAN 详细日志记录”,即可查看某 SSID 所对应的 BSSID 地址,以及 RSSI(Received Signal Strength Indicator,接收信号强度)。
  • ESSID(Extended Service Set Identifier):扩展服务集,由多个 BSSID 组成的一个使用相同 SSID 的网络,不同接入点比邻安置,通过以太网、Mesh(网状网)、WDS(Wireless Distributed System,无线分布式系统)等方式互联1

在开始讲解 WLAN 漫游技术前,先引用 Cisco WLAN 漫游白皮书中的一句话2

Keep in mind that the client is always the one that decides to roam to a specific AP, and the WLC/AP cannot decide this for the client. The roaming event is initiated by the wireless client once it considers it should roam.

始终牢记:无线客户端才是决定 WLAN 漫游的主体,而无线接入点控制器、无线接入点则不是。仅当无线客户端认为有必要进行漫游时,漫游事件才会发生。

一般意义上的 WLAN 漫游架构无非以下几种形式

  1. AP 间使用 WDS 桥接,使用相同的配置参数(SSID、加密方式)且两个接入点间距离足够近,此时其中一台 AP 充当另一台 AP 的中继。这种方式成本低,空口传输效率减半,一般用于扩展网络的覆盖范围,常见于消费级产品(各种 WiFi 扩展器、中继器、放大器)。
  2. AP 间仅简单地使用相同的配置参数(SSID、加密方式)且多个接入点形成交叉覆盖,类似于运营商基站的蜂窝网络。当扫描到具有更强信号的接入点时,无线客户端可能会发生漫游事件。由于缺少 Wireless Lan Controller(WLC)和 Fast Transition 快速漫游协议的介入,一般会触发一次完整的 WLAN 连接操作以及 DHCP 地址的分配,可能会导致三层业务中断。
  3. AC(Access Point Controller,无线接入点控制器)+ AP 的结构,借助 802.11k、802.11v、802.11r Fast Transition Roaming 快速过渡漫游技术,通过 AC 协商整个 WLAN 漫游过程,常见于企业园区、校园、公共场所3。近年,随着 SDN(Software-defined Networking,软件定义网络)及云计算的流行,硬件 AC + AP 的架构逐渐被抛弃,具备云管理能力的统一无线网络(Unified Wireless Network)取而代之了,例如 Aruba Instrant、Cisco Meraki 和 Ubnt Unifi。由此,AC 可以是虚拟控制器(由接入点集群中的某个 AP 充当 Master,运行 Virtual Controller 的业务),也可以是 Unifi Cloud Key 这样可选配的外置控制器,而不再是一个必须物理存在的硬件设施。
  4. Mesh 网状网,是目前消费级家用高端 WLAN 产品的一大亮点,采用有线回程或无线回程的方式,扩大无线网的覆盖面积。例如华为子母路由、Linksys Velop 和 Netgear Orbi。优点很明显,便于安装、易扩展。缺点是吞吐量低,不适合高客户端密度环境,且数据包通过多跳转发时不可避免的增加了传输延迟,降低了通信效率。
  5. 中心 AP + 分布式馈线系统,例如华为敏捷分布式无线覆盖方案(AP9430dn),采用基站式的分体架构设计,将数据处理与射频模块分离,形成单一中心 AP + 多个远端射频单元的组合,不仅降低了大规模园区部署的采购成本(仅需要为 AP 购买 license,毋须为远端射频单元购买),更提高了 WLAN 漫游的用户体验。当然,也可以通过 50 欧姆馈线外接天线的方式实现低成本的“无缝漫游”。在一些室内低密度覆盖环境下,常常使用放装型 AP 搭配腔体功分器组成室分系统,同时承载 2.4Ghz WLAN 信号以及 2G/3G/4G 运营商信号。

在本文中,我们将主要讲解由 802.11k/v/r/w 快速过渡漫游技术驱动的 AC + AP 组网架构的 WLAN 环境。

注意:以下部分内容原文节选、整理、翻译自思科《802.11 无线局域网漫游和思科统一无线网络快速安全漫游白皮书》及思科《Enterprise Mobility 8.1 Design Guide》34

802.11k Assisted Roaming

802.11k 辅助漫游技术允许 11k 兼容的无线客户端向当前关联 AP 请求可作为漫游目的地的邻居 AP 列表,AP 将返回客户端一个包含了位于当前 WLAN 漫游域内的相邻接入点的 BSSID 、所处频道以及其他信息。一般而言,列表中的频道与当前关联 AP 与无线客户端的链路处于相同频带(2.4Ghz 或 5Ghz)。双列表配置(dual-list configuration)则可以同时返回两个频带的结果。使用 802.11k 辅助漫游技术,可以避免客户端主动扫描全部频道,有助于降低客户端漫游过程中探查(Probe)漫游目的 AP 的时间开销。

802.11v Network Assisted Power Savings and BSS Transition

802.11v 网络辅助节能技术可以使无线客户端在网络闲置状态下进入待机状态,延长移动设备的电池寿命。除此之外,802.11v 还可以用于实现接入点的负载均衡功能,将客户端从高负载的接入点引导至低负载接入点。当然,负载均衡服务不一定需要依赖 802.11v,例如 Aruba ARM Client Match 客户端匹配功能。

802.11r Fast Transition Roaming

802.11r 快速过渡漫游技术旨在当客户端与当前 WLAN 漫游域的第一个客户端建立连接后,后续的漫游过程将不再需要重新与待关联接入点进行一次完整的鉴权操作。

802.11r 漫游分为两种方式:3

  • 空口漫游(Over-the-air)
  • 通过分布式系统的漫游(Over-the-ds)

对于 802.11r,有以下几点需要注意

  • 802.11r 快速过渡漫游不适用于 Mesh 组网结构的 AP
  • 802.11r 仅支持开放型(未加密的)或 WPA2 加密型 SSID(关于 WPA2 的介绍见下文)

WPA2 (Wi-Fi Protected Access 2)

  • WPA:使用 TKIP 加密(WEP 的升级版),是 WEP 至 WPA2 的过渡
  • WPA2(RSN):CCMP 加密
    • WPA2-企业版(WPA2-Enterprise):基于 802.1X 认证(对于未鉴权的终端,链路中的设备将只放行 802.1X 信令;常用于校园网接入),配合管理交换机(Managed LAN Switch)与 RADIUS(Remote Authentication Dial In User Service,远程用户拨入验证服务)使用。
    • WPA2-个人版(WPA2-Personal,WPA2-PSK):使用 Pre-shared Key(PSK)预共享密钥进行身份认证,所有用户使用相同的密钥建立连接。一般于家庭、咖啡厅等简单环境下使用。

Conclusion

有人指出 WLAN 漫游本质上是一个无线电问题6,这种说法其实是有失偏颇的。2.4GHz、5GHz 频段是公共频段,相比运营商所使用的频段有更多的外部干扰和合规限制(功率、DFS 等)。此外,由于 2.4GHz 频带在中国区域可用频段仅有 1-13 共计十三个频段,实际上覆盖时一般只选取 1、6、11 这三个频段进行交替覆盖,频谱资源稀缺。对于对 50ms 内低时延快速漫游没有业务需求(如 VoWiFi)的用户,直接购买普通无线路由进行交叉覆盖即可;对于进阶级家用用户,不要去购买标榜 Mesh、电竞级路由的智商税产品,经济可靠的 AC + AP 或 Unified AP 才是最好的选择,例如新华三、TP-Link、信锐、锐捷的消费级接入点;对于专业级家庭用户,动辄组 Home Lab 搞家庭 CEPH 或给家里划分好几个 VLAN 做二层隔离的计网发烧友,企业级的无线覆盖产品,例如 Aruba Instant、Cisco Meraki 以及 Ruckus 无疑是最好的解决方案。


  1. 1.【WLAN从入门到精通-基础篇】第6期——WLAN常用概念 - 华为企业互动社区 https://forum.huawei.com/enterprise/zh/thread-318127-1-1.html
  2. 2.802.11 WLAN Roaming and Fast-Secure Roaming on CUWN - Cisco https://www.cisco.com/c/en/us/support/docs/wireless-mobility/wireless-lan-wlan/116493-technote-technology-00.html
  3. 3.Enterprise Mobility 8.1 Design Guide - 802.11r, 802.11k, 802.11v, 802.11w Fast Transition Roaming [Cisco 5500 Series Wireless Controllers] https://www.cisco.com/c/en/us/td/docs/wireless/controller/8-1/Enterprise-Mobility-8-1-Design-Guide/Enterprise_Mobility_8-1_Deployment_Guide/Chapter-11.html
  4. 4.802.11 无线局域网漫游和思科统一无线网络快速安全漫游 https://www.cisco.com/web/CN/products/products_netsol/wireless/pdf/cco_whitepaper_01_v2.pdf
  5. 5.802.11r 无线交互 https://zhuanlan.zhihu.com/p/52967573
  6. 6.多个无线 AP 怎么实现无缝漫游? - 知乎用户的回答 - 知乎 https://www.zhihu.com/question/19751226/answer/159397304

PT 下载从入门到养老(二)

最近不少 PT 站开始效仿币圈,将讨论群组从 QQ / 微信转移至了 Telegram。这里整理了一份部分 PT 站点相关的 Telegram 群组链接和频道。

群组

频道

Bot

Windows Hello "Couldn't turn on camera"

The embedded Windows Hello Face sign-in in Windows 10 is a amazing feature that it can unlock the computer by your face in no more than one second. But sometimes it doesn’t work properly on my laptop,

Case 1

Windows Hello Face sign-in does not work, even if roll-back the device driver. This is due to the webcam protection module of ESET Internet Security blocked the access privilege of svchost.exe to the IR camera. If the Windows Hello still can’t be enabled even the webcam protection has disabled, try the following procedure.

  1. Re-install the ESET Internet Security suit.
  2. Turn-on Windows Hello face sign-in.
  3. Press Win + L to lock screen and then unlock screen via Windows Hello. After that, the svchost.exe will be added to the whitelist automatically.

Case 2

Updated in 2019-12-21

When digging into the “Device Manager”, there is an unknown device in the “Other devices” subgroup, which is the missing IR Camera that used belong to the Cameras group. When it was clicked, a “device descriptor request failed” prompt will be given. This problem may be commonly encountered when the laptop recovered from sleep mode.
Solution: Just right-click the unknown device then uninstall it. Moreover, click “Scan for hardware changed” in the toolbar, then Windows will automatically install the driver for it. After that, the face sign-in will be back to you when the IR Camera appears in the “Cameras” subgroup again.

FreeSWITCH 电话软交换系统搭建(二):软电话客户端选取

网络上有许多开源或闭源的 SIP / H.323 客户端,但是大多不尽人意,有的界面复杂难以上手,有的功能较简单,可设定的参数较少。在此选取几款免费的客户端做推荐。

1. Zoiper (全平台)

Zoiper 是一套非常成熟的 VoIP 客户端解决方案,跨 Windows、macOS、Android、iOS 甚至 Windows Phone 全平台。

优点

  • 支持的功能较全面,例如 TLS 加密语音、WiFi 下后台驻活等,还有一些付费功能加钱即可使用
  • 支持视频通话,可以设置分辨率
  • 支持配置多个账户

缺点

  • 属于共享软件,部分功能需要付费,例如 PUSH 推送、G.722 语音编码等
  • 有广告

2. PolyCom RealPresence Mobile - Phone (iOS / Android)

宝利通公司出品的多媒体会议客户端,支持 SIP 和 H.323 协议,跨 iOS 和 Android 平台,是目前我在用的一款对 H.323 支持比较好的客户端。

第一次运行会提示输入宝利通网关地址,跳过此页面即可设置自己的语音网关。

优点

  • 界面简洁大方,设置容易
  • 支持配置内网、外网网守
  • 支持根据网络状态(3G、4G/WiFi)调节语音速率

缺点

  • 没有高级设置,无法调整一些细节参数

3. MizuDroid (Android)

一款功能非常强大的 SIP 软电话客户端,仅支持 Android。采用了 Android 4.x 时代的设计风格,简单粗暴。

MizuDroid - Google Play

优点

  • 可以设定多个用户配置文件
  • 支持 Call Forward(Call Divert,呼叫转移)、Call Transfer(呼叫迁移)、Number Rewrite(号码重写)等功能
  • 功能非常强大
  • 没有广告,完全免费

缺点

  • 配置界面令人眼花缭乱
  • 用户界面较简陋

Reference

FreeSWITCH 电话软交换系统搭建(一):初始化安装

介绍

FreeSWITCH 是一个跨平台的开源电话软交换系统,与 Asterisk 类似,常被用于开发各类视频会议系统、客服系统、电话转接等服务。FreeSWITCH 可以被当作一个 PBX(Private Branch eXchange)作为内部电话交换机使用,也可以对接第三方 SIP 落地网关,将语音业务延伸至传统语音通信网,实现电话业务的内外网互通。

部署

运行环境:Microsoft Azure A3 (4 vCPU, 7 GB RAM)

操作系统:Windows Server 2016

连接方式:客户端 (4G / WLAN) <-> Internet <-> Azure (10.0.0.0/24)

  1. files.freeswitch.org 下载 x64 架构的安装包。

  2. 进行典型安装(Typical)。

  3. FreeSwitchConsole.exe 添加至防火墙放行列表。

  4. 修改 /conf/sip_profiles 目录下的 external.xmlinternal.xml,将value 字段修改为 Azure 实例的公网 IP 地址(如下方所示)。

    1
    2
    <param name="ext-rtp-ip" value="[external_ip]"/>
    <param name="ext-sip-ip" value="[external_ip]"/>
  5. /conf/directory/default 目录下配置分机号(did)及密码;默认分机号为 10001019,密码为 $${default_password}1234。详细分机设置及电话会议号码如下表所示3

号码 说明
9664 保持音乐
9196 echo,回音测试
9195 echo,回音测试,延迟5秒
9197 milliwatte extension,铃音生成
9198 TGML 铃音生成示例
5000 示例IVR
4000 听取语音信箱
33xx 电话会议,48K(其中xx可为00-99,下同)
32xx 电话会议,32K
31xx 电话会议,16K
30xx 电话会议,8K
2000-2002 呼叫组
1000-1019 默认分机号
  1. /conf/vars.xml 修改默认密码(注意:如果不修改此处的默认密码,通话连接将会被系统强制延迟1

  2. 为 Azure 实例的网络安全组根据需要放行入站端口,如下表所示2

FireWall Ports Network Protocol Application Protocol Description
1719 UDP H.323 Gatekeeper RAS port
1720 TCP H.323 Call Signaling
3478 UDP STUN service 用于 NAT 穿透
3479 UDP STUN service 用于 NAT 穿透
5002 TCP MLP protocol server
5003 UDP Neighborhood service
5060 UDP & TCP SIP UAS 用于 SIP 信令 (标准 SIP 端口,对于默认 ”Internal” 配置文件)
5070 UDP & TCP SIP UAS 用于 SIP 信令 (对于默认 “NAT” 配置文件)
5080 UDP & TCP SIP UAS 用于 SIP 信令 (对于默认 “External” 配置文件)
8021 TCP ESL 用于 mod_event_socket
16384-32768 UDP RTP/ RTCP multimedia streaming 用于 SIP、交换以及其他协议的语音或视频的数据传输
5066 TCP Websocket 用于 WebRTC
7443 TCP Websocket 用于 WebRTC
  1. 以管理员身份运行 FreeSwitch

  2. 使用之前所填写的登录凭据在 SIP 客户端上进行注册,例如在 Zoiper 上,使用 [用户名]@[PBX/VoIP 运营商] ,如 [email protected][服务器地址] ,密码为 1234

  3. 考虑到 NAT 对于连接可能构成影响,需要启用 SIP 客户端的 STUN 并使用 TCP 而非 UDP 进行连接。与此同时,对于客户端也应该配置为“始终允许后台运行”和“允许无限制地使用数据连接”,并开启“自动运行”。

参考文献

宿舍用 UPS 不间断电源选购指南

前言

学校宿舍实施工作日 11:00 PM – 06:00 AM 断电策略,不利于赶 Deadline 以及 PT 下载;除此之外,整栋楼数百千瓦负载的通断无疑会产生浪涌,对于磁盘阵列和显示器都有着潜在危害。为此,在宿舍购置一台 UPS 不间断电源是很有必要的——不仅能在断电后为笔记本及移动设备充电,还能对接 NAS 和 HTPC 实现自动关机,更能提供 AVR 稳压,过滤电压突波,避免珍贵的数据和设备遭到损失。

选购

常规 UPS 从工作原理上大致可分为三种:

  1. 后备式 UPS:在市电正常时通过市电直接供电;市电中断或市电电压超出范围时,由电池逆变进行供电。成本较低,市电与电池切换时有一定延迟(一般的电子设备如果电源质量可靠,可忽略切换时延迟所造成的影响),一般输出方波,电压精度低。
  2. 在线式 UPS:逆变器始终处于工作状态,对于市电转化得到直流或电池的直流进行整流输出,电压精度高,空载大,噪音较大,成本较高。
  3. 在线互动式 UPS:市电正常时由市电直接供电;市电电压不稳时通过稳压电路或电池逆变供电;市电中断后通过电池逆变供电。具有 AVR 自动电压调节功能,噪音较小,成本介于后备式和在线式之间。

考虑到宿舍环境以及学生的经济能力,建议选购后备式 UPS 或在线互动式 UPS,兼顾成本与低噪音。

UPS 从供电时间上大致可分为两种:

  1. 标机:内置几块蓄电池,不提供外接电池接口。
  2. 长延时机:有的可以内置电池,一般通过外接电池方式连接 48V – 192V 蓄电池阵列,实现数小时以上的供电时间。

大部分学生宿舍均不允许存放蓄电池,且蓄电池连接线缆时如有不规范操作可能产生电弧并引发火灾,因此不建议在宿舍使用外接电池的 UPS 或是购置逆变器 + 蓄电池自行组装 UPS。

对于 UPS 功率的选择,一般按 UPS 标注功率等于 60% 实际负载来算:例如实际负载 600W,选购 1000VA 的 UPS。

目前市场上可以购买到民用 UPS 品牌以 APC(施耐德电气)、山特、克雷士为主。综合比对下来,作为法国品牌的 APC 电气方案比较专业成熟,相对而言价格也较另外两家国产 UPS 厂商贵出几倍,一般提供两年的保修;山特在京东和淘宝的口碑不错,价格也很实惠,一般提供三年保修。

如果手头比较拮据,可以考虑在闲鱼、转转等二手平台购买不含电池的品牌空机 UPS,然后自行从官方等渠道购买替换电池搭配使用。

经过均衡对比,我选择的是 APC 的 BR1000G-CN 在线互动式 UPS,提供最大 600W 负载和 50分钟(100W)的延时。对于 Windows 平台,APC 提供 PowerChute 软件,通过 USB 连接 UPS 进行高级管理,实现定时静音、自动关机等功能;对于 Unix 平台,有开源的 APCUPSD 提供支持。

如有关于宿舍 UPS 不间断电源选购的疑问,欢迎留言。

使用贴士

  • 对长延时有需求的同学不要图省事购买大功率 UPS:UPS 在长期轻载状态下会致使蓄电池过度放电,损害电池寿命。
  • 如果宿舍不断电,每三个月需对 UPS 进行一次充放电操作。
  • 放电后必须保证 UPS 有足够的充电时间(10 小时以上)。

PT 下载从入门到养老

介绍

PT (Private Tracker) 是一种基于私有 BT Tracker 服务器的资源传播形式,经授权的用户使用受允许的客户端进行种子制作与下载。相较于传统 BT,PT 站往往采取了严格的邀请制度以及免责制度来规避法律风险,同时要求用户客户端开启传输加密以绕过运营商的检测策略。

许多高清爱好者聚集在 PT 站,发布翻录的蓝光原盘、CD 以及录制的卫星电视讯号;得益于 Netflix、HBO 等高清流媒体在线视频平台的发展,近年也出现了一些 WEB-DL (Download from web)资源。

目前国内使用的 PT 站源码大部分为基于浙江大学 xiazuojie 团队所开发的开源整站项目 NexusPHP,基于 PHP + MySQL + Memcached。

国内 PT 站可以划分为两个系别:教育网 PT 站公网 PT 站

  • 教育网 PT 站

北邮人(北京邮电大学)、蒲公英(西北工业大学)、极速之星(北京理工大学)、六维空间(东北大学)为主。

原创影视资源较少,基本都是转载。Coursera、Udacity 等公开课资源(WEB-DL)以及电子书较多,此外还提供一些 Steam 游戏备份文件与学习资料等内容。

  • 公网 PT 站

传说中国有五大公网 PT 站:HDS、TTG、HDC、CHD、HDR。 后来经过世界版权日风波,HDStar 管理组被捕入狱,剩下的站也多多少少受到了一些影响,有的关闭了,有的隐没了。

目前以影视资源为主的有 HDChina(原 HDWinG)、CHDbits、CMCT 等站点;

以动漫资源为主的有 U2、Skyey Snow 天雪动漫

以音乐资源为主的有 OpenCD 皇后 PT。

对于用户,往往有以下要求:

  1. 上传、下载量
  2. 分享率(上传量/下载量)
  3. 魔力值(Bonus points,即积分,获得于用户赠送、活动奖励或做种)
  4. 最小做种时间(称为 H&R (Hit and Run),一些 PT 站禁止下完就跑的行为,要求用户至少保留做种一定时间)

生存指南

考核期

大部分站点都有邀请考核制度,需要在一个月时间内达成一定的上传量、下载量以及魔力值。考核由于不计算魔力值的兑换上传量,因此只能老老实实下载热门种子并做种。

考核后

对于一些以影视作品为主的网站,尽可能的下载热门种子,这样能更快的获得上传量。对于以小种为主的 PT 站,如 OpenCD 以及大部分教育网站点,则需要通过下载大量小体积种子并长时间做种以换取魔力值,再使用魔力值兑换上传。

养老期

此时混 PT 只为偶尔下几个资源,而不是那么注重参与了,因此保证一个良好的分享率以备不时之需是很有必要的。可以通过 SeedBox 例如 FeralHosting 配合 RSS 订阅来实现自动化无人值守下载,也可以自己搭建黑群晖等 NAS 或私人 HTPC 平台来进行自动化下载。

部分站点可以通过捐赠获得 VIP 头衔,从此不再需要担心分享率问题。

注意

  • 除非在特定板块,不要在某个 PT 站提到其他 PT 站点的名字
  • 尽可能地尊重发布者,不要在评论区发表不积极的意见
  • 遇到技术问题应先使用搜索引擎检索,而不是当伸手党
  • 不要作弊,否则可能会遭受连锁封禁(被多个站点同时封禁)
  • 不要持有小号
  • 谨慎选择邀请人,不要随意发送邀请
  • 不要在公共场合发送、索求邀请码

Intellij IDEA 执行 JUnit 单元测试的正确姿势

  1. 安装 JUnit 插件

    File -> settings -> Plugins -> Browse repositories -> JUnit -> JUnit Generator V2.0,安装后需重启 Intellij IDEA。

  2. 为当前项目添加依赖

    File -> Project Structure -> Libraries,找到 Jetbrain Intellij IDEA 的安装目录下的 lib 文件夹,添加 hamcrest-core-1.3.jarjunit-4.12.jar 以及 junit.jar

  3. 为待测试类添加测试样例

    在待测类中按 ALT + INSERT,选中 JUnit Test