macOS Sierra (10.12.3)利用aria2解决CUDA下载失败问题

macOS Sierra(10.12.3)上尝试下载 NvidiaCUDA,但是由于国内网络问题,导致使用浏览器下载的时候,不仅慢,而且还经常失败,基本上没办法下载成功。尝试使用迅雷的话,如果不是会员,貌似也没有太多的用处。另外一个比较麻烦的问题是, Nvidia下载服务器,随着下载时间的延长,会强制限制下载速度,导致越来越慢,到最后只有若干 KB的速度。
继续阅读macOS Sierra (10.12.3)利用aria2解决CUDA下载失败问题

Mac自带的录屏工具

这个一般是指QuickTimePlayer,用这种方法对Mac屏幕录像,很多人会反应说“没有声音”,到底是怎么回事呢?让我们使用一遍就知道了。

  1. 右击Mac下排的QuickTimePlayer,选择“新建屏幕录制”
  2. 在弹出来的小窗口中,点击中间的红点,选择是否录制麦克风的声音和显示鼠标点
  3. 再点击小红点就可以开始录制了
  4. 可以按一下录制全屏,也可以拖动录制屏幕的一部分
  5. 点击选择录制区域中间的“开始录制”
  6. 屏幕中高亮部分就是正在录制的区域,点击电脑最上面的菜单上的“停止键”结束录制
  7. 在自动跳出来的视频中,就可以看到刚刚录制的内容
  8. 单击左上角的叉号,就可以选择是否储存刚刚录制的视频,以及编辑视频的名称和储存的位置

继续阅读Mac自带的录屏工具

macOS Sierra (10.12.3)编译Faiss

最近 Facebook AI实验室开源了相似性搜索库 Faiss
Faiss是用于有效的相似性搜索( similarity search)和稠密矢量聚类( clustering of dense vectors)的库。它包含了可在任何大小向量集合里进行搜索的算法,向量集合的大小甚至可达到 RAM容纳不下的地步。另外,它还包含了用于评估和参数调优的支持代码。 FaissC++编写,有 Python/numpy的完整包装。其中最有用的一些算法则在 GPU上实现。

下面,我们介绍一下如何在 macOS Sierra (10.12.3)上编译 Faiss

1.下载 Faiss源代码

2.安装编译需要的工具

3.修改调整源代码,准备编译

4.编译

5.执行测试用例

其余的示例,参考源代码中的 INSTALL文件中的内容即可。

mac下~/.bashrc不起作用

/.bashrc里面的一些设置,比如 alias命令的设置“不起作用”,新开一个终端都要 source一下才起作用。

unix下当 shelllogin shell.bash_profile才会加载,而 bashrc正好相反。

真正的区别是在 linux下,当用户登录到一个图形界面,然后打开一个终端 terminal,那些 shellnon-login shell

然而,在 OS X登录的时候,并没有运行着一个 shell,所以,在运行 Terminal.app的时候,其实那是一个 login shell

后来新建了 .bash_profile加载一次 .bashrc.

参考链接


mac下~/.bashrc不起作用

macOS Sierra (10.12.3)使用Android Studio 2.2.3导入Android 5.1.1_r38 (Lollipop)源代码

1.编译 Android 5.1.1_r38源代码

参考链接:
macOS Sierra (10.12.3)上编译ARM版本Android 5.1.1_r38 (Lollipop)源代码

2.调整 Android Studio的属性

默认情况下, macOS的磁盘分区文件名是不区分大小写的,但是我们编译的 Android 5.1.1_r38源代码却是在新建的一个区分大小写的分区上的,因此需要临时要求 Android Studio区分文件名的大小写。

在其中增加

3. 编译 Android SDK

Android SDK我们需要自己编译注意,此时磁盘空间可能已经不足了,我们首先增大一下磁盘空间

由于我们修改了 TARGET_BUILD_TYPE,因此需要调整代码

全部替换里面的 ${OUT_DIR}/target${OUT_DIR}/debug/target

编译代码

编译好的文件在 out/host/darwin-x86/sdk/sdk目录下面。

4.生成工程文件

工程目录与编译目录相同

编译完成后,在 /Volumes/android目录下,生成 android.ipr,然后用 Android Studio 2.2.3导入已经存在的项目即可,导入后,需要比较长时间建立索引,要耐心等待。

导入完成后,根据错误提示,设置 JDK为我们编译内核时候的 JDK,设置 Android SDK为我们刚刚编译的版本即可。
File-> Project Structure-> Project Settings-> Project-> Project SDK中设置 JDK版本。

File-> Project Structure-> Project Settings-> Modules-> android-> Dependencies中设置 Android SDK路径以及版本。

参考链接


macOS Sierra (10.12.3)上通过SSH免密码登录Ubuntu 14.04服务器

1.先参考 Putty通过SSH无密码登陆Ubuntu12.04 配置好 Linux服务器,并保证在Windows下可以正常自动登录服务器

2.拷贝已经配置好的私钥到当前登录用户的 .ssh目录下

3.使用指定的私钥登录服务器

Mac OSX下VirtualBox直接使用物理硬盘作虚拟机磁盘

目前 VirtualBox只能用命令行来建立磁盘才可以使用物理硬盘。

如果是USB磁盘的话,那么需要从"关于本机"->"概览"->"系统报告"->"USB"中找到磁盘的名字,比如"disk2".

我们假定 VirtualBox安装在"
/Applications/VirtualBox.app/"这个目录下面,要在" ~/VirtualBox\ VMs/Ubuntu/"目录下面生成文件,则执行如下命令:

/dev/disk2表示机器上的第二块硬盘,每次插入新磁盘后,就会出现类似 /dev/disk*的一个路径名。

最后,新建一个虚拟机,然后指定使用刚刚创建的磁盘即可。

参考链接


How do I install Mavericks onto external HD but from inside VirtualBox

macOS Sierra支持NTFS/EXT4文件系统

1.安装 HomeBrew

按照 让Mac也能拥有apt-get类似的功能——Brew 的介绍配置安装 HomeBrew

2.安装 osxfuseext4fusentfs-3g

卸载命令为:

3.挂载磁盘设备

如果是USB磁盘的话,那么需要从"关于本机"->"概览"->"系统报告"->"USB"中找到磁盘的名字,比如"disk2".
如果已知是"EXT4"磁盘格式的话,则使用如下命令:

参考链接


Mac El Capitan上的latex、NTFS硬盘等的一些东西(不一定靠谱)

Mac OSX EI Capitan(10.11.5)上使用crosstool-ng 1.22.0 建立树莓派2B的编译环境

背景介绍


树莓派自带的编译工具是基于 Linux的,在 Mac OSX上是无法正常使用的,因此比较简单的方法就是使用 crosstool-ng来建立交叉编译环境。

配置编译环境


1.安装 HomeBrew,方便各种工具的安装

参考让Mac也能拥有apt-get类似的功能——Brew

2.使用 HomeBrew安装 crosstool-ng

3.链接 Mac OSX上的 installginstallMac OSX上没有 ginstall

如果不执行命令,则会报错

4.使用 HomeBrew安装 expat

不执行此命令,我的电脑会出现 crosstool-ng在配置 expat的时候失败,但是两者使用的版本并不相同,另外貌似出错后,重试即可,不需要安装 expat,但是稳妥起见,还是安装好了。
5.创建大小写区分的磁盘分区文件,并挂载(如果你系统创建的时候,系统分区以及区分大小写,则不必此项操作)

参考Mac OSX下执行crosstool-ng提示“Your file system ‘xxxx’  is *not* case-sensitive!”

6.在刚刚创建并挂载的大小写区分的磁盘上执行配置命令

7.修改刚刚命令生成在当前目录下的配置文件

找到

禁止使用静态链接( Mac OSX下,无法提供对于 libc的静态链接,只能动态链接)

8.执行构建命令

构建中遇到的问题


如果构建出错,可以使用

后面的数字代表几个并行的任务,单个任务可以更方便的查看出错的信息,多任务并发会导致日志打印的非常混乱。

在构建( ct-ng build)的时候遇到任何问题,都应该查看当前构建目录下的 build.log文件,这个文件中详细记录了构建的过程信息,详细的出错信息等。
由于 crosstool-ng在构建过程中需要去服务器上下载源代码,难免出现文件下载不完整的情况,这种情况下,可以从 build.log文件中看到如下的内容:

则说明下载的源代码出现了问题。最容易出现这个问题的是 gcc.以 gcc-5.2.0为例子,修正的方法如下:

简单解释一下代码, tarballs存储了从服务器上下载的全部源代码的压缩包,解压缩出现问题,因此必须删除,让 crosstool-ng去重新下载,扩展名为 .extracting文件为 crosstool-ng的标记文件,用来标识这个包是不是已经被解压缩过,一旦这个文件存在 crosstool-ng就认为对应的工具已经就绪了,就不会处理这个工具了,最后删除的是工具源代码的目录。

如果提示安装 binutils的时候失败,如下所示:

查看 build.log可以看到如下的内容:

这个BUG的原因是由于 GCC的版本问题导致的,低于4.7版本的 GCC无法理解这个语法,尽管 Mac Osx已经使用最新的 LLVM,但是遗憾的是,最新的 LLVM并没有支持这个语法。解决方法如下:

找到如下代码

修改为:

如果出现了" fatal error: bracket nesting level exceeded maximum of 256",如下所示:

则修改方法如下:

在出现的界面中选择" Paths and misc options"项目
Crosstool-NG-PathAndMiscOptions

在第二级界面中不断下拉,找到" Extra host compiler flags",增加" -fbracket-depth=512",这个选项。

Crosstool-NG-PathAndMiscOptions-ExtraHostCompilerFlags

然后重新执行

如果出现错误:

这个是由于 LLVM目前的版本还无法正确的理解部分 GCC的汇编部分的写法,导致编译失败,而这部分的语法一般都是用在优化的时候出现错误,因此我们需要禁用这部分的优化,使用" Paths and misc options"->" Extra host compiler flags"增加 " -fno-unroll-loops"。如下图:
Crosstool-NG-PathAndMiscOptions-ExtraHostCompilerFlags-NoUnrollloops
如果出现如下错误:

这个问题是由于编译的时候,同时打开的文件数量超过了 256导致的,修复方式为在 shell中增大同时打开的文件数量限制到 1024

然后在同一个 shell中继续执行

如果出现如下错误,则直接忽略即可:

至于其他问题,貌似重试一下就可以解决了。

编译树莓派源代码


Ubuntu 16.04 (x64)树莓派B+(Raspberry Pi  B+)源代码编译

参考链接


Mac OSX下执行crosstool-ng提示“Your file system ‘xxxx’ is *not* case-sensitive!”

Mac下面使用 HomeBrew安装了 crosstool-ng来编译树莓派的代码,结果在执行的时候报告如下错误:

比较简单的解决方法就是创建一个支持大小写区分的文件,作为一个分区挂载,然后把代码拷贝到这个分区中执行编译。

1.创建分区文件

2.挂载分区

早期版本的 Mac OS X

对于 OS X EI Capitan(10.11.5)版本而言,生成的文件名变成了 raspberry.dmg.sparseimage因此需要使用这个文件来挂载

挂载后会在桌面生成一个名为 Raspberry的磁盘文件夹生成,直接操作这个目录即可。

3.修改 crosstool-ng的编译工具下载目录

如下图的方式进行操作:

1.选择" Paths and misc options",并选中" Select"之后点击回车按键
Crosstool-NG-PathAndMiscOptions

2.点击向下的方向按键,,找到" (${Home}/src) Local tarballs directory",这个项,并选中" Select"之后点击回车按键,修改为" /Volumes/raspberry/src",然后继续向下,找到" (${Home}/x-tools/${CT_TARGET}) Prefix directory",这个项,并选中" Select"之后点击回车按键,修改为" /Volumes/raspberry/x-tools/${CT_TARGET}"
Crosstool-NG-PathAndMiscDirectory
Crosstool-NG-PathAndMiscOptionsPrefixDirectoryVolumesraspberry

修改后的结果如下图:

Crosstool-NG-PathAndMiscDirectoryChange
完成操作后,不断快速按下 Esc按键,在最后弹出的确认保存窗口中选择保存即可,如下图:

Crosstool-NG-Configure-Save

4.卸载分区