在 Ubuntu 上搞定了 LOL(英雄联盟)

Workspace 1_061 Workspace 1_060

League of Legends(LOL/英雄联盟) 是个不错的小队竞技游戏, 玩的好了竟然还能拿到美国工作签证. 只是代码写的可能比较”另类”, 在 Wine 环境里跑的很是吃力. 我把图像质量调到中等, 依旧只能达到约 20FPS. 对比图像质量开到高等依旧流畅的 Elder Scroll: Skyrim, 代码质量的差异就可以想像了.

Screenshot from 2013-12-28 20:50:06 Screenshot from 2013-12-24 22:00:33

如果是初次安装 Wine, 需要如下 Windows DLLs:

winetricks winxp d3dx9 vcrun2005 vcrun2008 wininet corefonts

不习惯 CLI 的朋友也可以运行 winetricks 然后在对话框里勾选以上组件. 详情请参考 WineHQ.

另外 LOL 还用了一些独特的贴图类型, 以至于 Wine 还不会处理, 导致游戏中在商店买装备就会崩溃! 🙁 下面是解决方法之一:

https://bitbucket.org/Xargoth/tuxlol/wiki/Home 下载 tuxlol 补丁, 然后运行以下命令:

sudo apt-get install mono-runtime libmono-system-core4.0-cil
mono tuxlol.exe patch –dir “/home/[USERNAME]/.wine/drive_c/Riot Games/League of Legends”

顺便提及, 微软的 .NET 框架也有了开源的实施方案: mono, 而且支持 Linux & Mac OSX. 补丁作者看来是横跨 Windows 和 Linux 的高手.

就可以了. 游戏开始加载时, 系统会提示无响应… 选择”等待”即可. 这个过程一贯很慢.  🙂

玩游戏不再是 Linux 的软肋

Screenshot from 2013-12-21 08:21:13 Screenshot from 2013-12-20 22:15:19

玩游戏曾经是 Linux 的软肋.

之前因为偶像 Linus 对 NVidia 竖过中指, 我就没敢尝试在 Linux 里用 N 卡… 最近貌似 NVidia 与 Linux 的外交关系趋于缓和, 很多之前保密的文档都对开源社区开放了. 于是我也试试在 Linux 里用 N 卡玩游戏. 碰巧 Ebay 上收了块便宜的 GTX660. 在 Ubuntu 里安装 NVidia 驱动最简单的方法就是如下:

Software & Updates_057

然后基本上就没什么可琢磨的了. 出我意料的是, NVidia 的非开源驱动对比 AMD 的要强太多了, 至少从开包即食的角度是这样的. 对比 AMD Linux x64 驱动, NVidia 做到了:

  • GTX660 比 HD7770 的性能要高约50%, 但在 Linux 里却要好上几倍. 可见 AMD 偷懒.
  • 即便是用 Wine, NVidia 驱动能很好的支持我 3000 x 1920 的双屏设置, 而且切换自如. Linux 本土的 OpenGL 游戏就更好了.
  • 图像质量与 Windows 下基本无差别.

最后奉劝 AMD 要高瞻远瞩, 不要落得个 Nokia 式的结局. 🙂

Linux 命令行上的文字处理

总是有些用户, 明明是自己手抖点错了, 却偏偏要怪服务器出问题. 如果让我选择相信一个人还是一台机器, 那… 还是选机器比较放心. 当然也不能冤枉好人, 于是如何从若干 GB 的服务器日志里找到线索就成为解决问题的关键了.

首先是 grep. grep 就好像是个过滤器, 将无关的内容滤掉, 却从不漏下真相. 假设服务器日志是 server.log, 其中包含时间, 地点, 人物:

1, 找出所有含 beijing 的记录

grep beijing server.log

2, 包含 2013-12-01 当天, 在 beijing 关于 user 的记录

grep  -E -e ‘2013-12-01.*beijing.*user’ server.log

3, 也可以将 grep 串联起来, 逐步缩小包围圈, 这样如果个别记录不符合时间, 地点, 人物的顺序, 也不会被漏掉. 当然我觉得日志还是规矩一点的好.

grep ‘2013-12-01’ server.log |grep beijing |grep user

另外作为开发人员, 使用 grep 来分析代码也很不错的. 找到目标之后, 很可能需要生成一个报表, 最简单的就是 cut 命令了. 假设日志格式是”date time location user action”, 如果我们只需要”date time user action”, 那么

grep beijing server.log| cut -d ‘ ‘ -f1,2,4,5

其中 -d ‘ ‘ 指定使用空格 ‘ ‘ 来做分隔符, -f1,2,4,5 就分别代表需要输出的字段, 因为 location 是第三个, 因此 3 没有出现. 比 cut 强大的多的就是 awk 了, 生成一个有小计/总计什么的表格完全是小菜. 不过这个不是我的兴趣, 所以就点到为止.

🙂

MBP 笔记本与 Fedora

fedoralogo

最近本来就忙, 老婆的 MacBook Pro 还出了问题. 于是我趁机游说: 跟我一起用 Fedora 吧, 不比 OSX 丑, 速度更快还不花钱. 估计最后一点打动了老婆的心, 于是在答应老婆不丢文件的前提下, 给她的 MBP 装上 Fedora.

不丢文件当然简单, 我找出一块闲置的硬盘换上, 原来的硬盘留着不动, 还有更保险的方法么? 有的话请写下面回复里吧.

Fedora 19 已经支持 EFI 启动了, 所以用 F19 光盘就能直接启动安装, 不再需要 rEFIt 这类的 EFI 启动工具. 安装过程基本上没有亮点, 很顺利就完成了. 取出光盘, 从硬盘启动后, 嗯, 启动画面有点花了… 登录后发现的第一个问题是: 无线网络没有开启. 一开始我有点失望, 因为 Ubuntu 的话肯定就支持了. 但从这里就能看到 Fedora 与 Ubuntu 不同的处世态度. 由于无线网卡驱动并非开源(类似 Adobe Flash 插件, 免费使用但无法获得源代码), 因此 Fedora 的软件库里是没有的, 只能从第三方软件库里安装.

常见的选择是将 RPM Fusion 添加到自己的软件源中. 点击链接, 下载, 安装即可. FPM Fusion 有 Free 和 non-free 两部分, Broadcom 无线网卡驱动归属 non-free. 安装了软件源之后, 在 CLI 执行以下命令:

sudo yum install kmod-wl-`uname -r`
sudo modprobe wl

MBP 的其它硬件功能基本都支持了, 触摸板就差劲了点, 只支持到双指. 安装其他软件就很容易了, 略过了.