电视盒子远程播放mac上的影音文件

用了几个小时测试和论证,在mac 10.12版本上通过电视盒子播放mac上影音文件。论坛里看到有好多人在问,留在这里,帮助有缘人吧。

本来通过系统默认的文件共享,几下点击就能够完成。结果上是,默认的文件共享能在两台mac之间完成共享。电视盒子打开后确一直都是密码不正确的提示。在mac系统10.6以后,默认的smb共享从网上的评论上看,已经不能兼容安卓系统,比如手机,电视盒子之类的设备。没纠细节,可能的原因大概有samba版本升级,或者mac默认smb共享中SigningEnabled,SigningRequired等涉及到签名加密的升级。

网上看有人用smbup来解决,测试后10.12不能顺利安装smbup1.41版。安装了两次,一次网络原因失败。另一次安装成功,但服务无法启动。
也看到有人用ftp,dlna等来实现。
自己尝试修改系统smb参数,替换系统默认smb服务端,从samba到samba3,samba4.都没能成功。网络上的brew安装已经没有这个源,换了个github上提供的地址也是找不到。port也找不到对应的版本。源码安装又好复杂。

一觉醒来后,突然想到可以找个现成的docker来实现。于是找到了。

地址 : https://github.com/dperson/samba
步骤如下

1 下载docker
2 docker pull dperson/samba
3 docker run -it -p 139:139 -p 445:445 -v /要共享的文件路径:/mount -d dperson/samba -u “用户名;密码” -s “用户名;/mount/;yes;no;no;all;none”

替换掉中文对应的说明。

最近WannaCry风声刚过,又是涉及到smb协议。使用这个方案的时候注意网络权限和共享目录权限。

关于自己实现索引

人类一思考,上帝就发笑。可怕的未知,但是还是想探寻什么。

如果有一个超过4g左右的文本文件,内容大概是key\tvalue的格式,如何查找某一个key对应的value。问题的起源就在这里。曾经自以为聪明的认为,这个问题的正解是,load到数据库,建立索引,使用sql查询。直到自己发问,数据库是如何实现索引,索引在硬盘中是如何存储的,如果索引超过了内存的大小,那如何来使用这个索引。从数据库到各种大数据平台,就算没有索引,也提供了使用主键查询,又是如何实现的呢。

因为索引是对数据或者地址的引用,索引的前提是否是可以根据地址定位到数据?如果不可以定位到数据,那索引又该如何实现和使用呢?

目前假想的索引实现是:
1 保存在内存或者文件系统中。如果在文件系统中,索引需要便于查找的文件格式,比如,使用btree实现的索引,每个treeNode使用256字节,整个文件的大小除以256就是索引的行数,root节点在文件头部,根据树查找需要的key的位置。
2 从位置中得到数据的首地址,调用文件系统api读取此地址加上数据长度的内容,结果就是需要的value。
3 索引的生成如果是在文件系统中,则会有大量的io,生成过程会比较慢。

要印证这些到自我实现,需要经历什么样的过程呢。数据结构只听过名字,还是得从数据结构入手吧。

什么是btree,这个结构的插入,删除,更新又是如何处理的呢?从这里开始吧。

页面离线缓存

有一个想法,还没有研究可行性。

HTML5中引入了离线缓存,利用这个缓存是否可以做到,让某个页面永不宕机,即使在服务器返回4xx,5xx等错误的时候。
引入这个特性的初衷,是为了没有互联网的情况下使用,能否移花接木用来处理服务器异常的情况呢。在某些情况下,web服务器与网页之间会加入应用防火墙,流量负载均衡,流量清洗,运营商缓存等逻辑等,这些逻辑的错误页面可能不由我们自己控制。

离线缓存和之前的网页缓存(js,css,页面等的缓存)有什么联系么?网页缓存的目录里能找到被缓存的源文件,但离线缓存的结果是以什么格式,又存储在哪里呢?

离线缓存是否可以大规模应用,加在cdn之前,加快网页加载速度和节省cdn流量呢?


目前测试的部分结果

  1. chrome下有提示,不建议在非安全连接下使用,虽然目前可用,但未来会被移除

    Use of the Application Cache is deprecated on insecure origins. Support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details.

  2. manifest文件必须以text/cache-manifest的Content-type返回,且文件以CACHE MANIFEST开头。
    意味着动态语言生成的这个文件需要去除空行,比如jsp的<% %>指令留下的空行需要去除

  3. 引用manifest的页面默认被缓存(type为Master)。但是这个页面的缓存会重新发起一次请求,这次请求并不会携带device信息。
    意味着如果用chrome浏览器模拟移动设备,此时缓存的页面是非移动设备的页面,影响测试。
  4. 如果只缓存有限的文件,需要在manifest文件的”NETWORK:”下配置通配符*,让其余请求不走缓存。否则很诡异大部分请求会是net::ERR_FAILED状态。另,通配符需要另起一行写不能和“NETWORK:”并列。
  5. 目前发现地址栏的任意改动都不会命中缓存(但是看缓存的地址却又不带参数),如果到需要缓存的页面的链接带有时间戳等随机因子,每次访问都会比不加缓存多一次请求,反而拖慢页面载入速度和加重服务器压力。

缓存后速度确实很快,不需要网络了。但是浏览器对这个的支持貌似还没跟上,调试和各种错误提示都太模糊。

添加google analytics

已经添加了google analytics。
如果只能添加静态的文件,该如何做访问量统计呢?再想想这个问题。

既然这样。再加个评论功能吧。

墙的原因,先选个国内的。
哪里看到国内第一是多说,然后适用一下。第一步google+帐号登录就502错误了,刷新几次后没结果。我想以后也不会用这个产品了吧。
再试试有言,这个名字起的好像不错,看说明,好像不登录也能用,如果登录后可以管理评论信息。

每次编辑完hexo的配置,总会留下一个.DS_Store文件,导致hexo生成文件的时候报错。权衡下不修改hexo了,直接禁止掉这个文件吧。

一个电子表

虽然不喜欢电梯,但是电梯里的那一个个数字还是觉得很美。虚虚实实的8的形状,竟然可以拼凑出10个数字。
有次无聊的时候,用几个div,里面背景色弄成黑色,用来做一个个笔划,实现一个电子表的时钟。然后趴桌子上,看时间缓缓流走。
已经忘记了当时的做法,只记得不完美。
好像是setInterval 1s获取当前时间并显示。但是由于渲染几个div需要时间,所以每隔一段时间,就会出现某一秒被跳过。然后为了让这个跳过少出现,自己控制时间的进位,平时只渲染移动最后一位秒,等到0的时候进位,刷新前一个数字,依次类推。
又好像想过setTimeout,每次加一秒。但又会和现实时间偏差。
也不记得当时有没有想到用字体来实现。只是现在想起了这样的实现。
也是研究下markdown和hexo的结合中怎么引用js,css和外部文件。


simple clock

盯了他一会,发现这个字体不是等宽的,1字好窄。有时间再看看字体的制作,自己修改下吧。

markdown临摹

如果代码也可以临摹,我可能会是个书法家么?

关于链接
首页

关于插入图片
avatar

插入code

1
2
3
4
5
6
7
//in chrome 50.0.2661.102
for(var i=0;i<10;i++){
let innerParam = i;
setTimeout(function(){
console.log(innerParam);
},1000*innerParam);
}


寻找未知的开始

寻找未知的开始

  • 对于普通人来说,坚持就是自己最伟大的力量。但是我们却普通到连这种力量也不再有。
  • 安装好Atom,打开markdown语法说明,借助hexo,我开启了寻找未知的hello world。
  • 写给总会放弃的坚持。