安装没啥坑,提示还挺好,照着官方文档安装,基本都是回车:http://9p.io/wiki/plan9/installation_instructions/ 踩了三个坑, 一个是我选文件系统的时候选的fossil+venti ,硬盘选了2G,然后自动分区的时候可能把fossil分区的太少,复制文件的步骤太慢,而且各种报错,太慢了我感觉不堆,我又重启复制,报不同的错,最后才提示磁盘不足。我又重新开了个10g的硬盘,然后就可以了。 开始我还以为选择的镜像路线不对,然后发现可以ctrol+d退回到主菜单。 之后复制不到一分钟就复制完了,这个才是现代机器的速度嘛。然后重启后,输入用户名那里,提示的是none,我还以为进去创建文件,没想到的是需要输入默认用户名glenda,这个在安装文档里有,我后来报错才去看的文档。 放一张启动后的界面吧,感觉ui挺好看,就是还不成熟,vb中bug还挺多的。 我还看了点官方介绍,感觉备份那个思想现在Windows,mac应该都有,还有远程文件系统现在也都有,应该没啥新内容。待发掘

Continue

plan9可能有点古老了,看官网是80年代的产物,感觉那时候还没有操作系统垄断,dos可能也就刚出来,Windows还不知道在哪。今天想起来了,我又找了篇文章看了看plan9的介绍,反而激起了我对plan9的兴趣,感觉有些理念可以借鉴。被垄断后的思维就会狭隘,偏见,开开视野也是好的。 感觉好多古老的玩意还挺有意思的,比如老早之前知道,磁芯大战(core war or core wars),细胞自动机(cellular automata),《一种新科学》(A New Kind of Science)Stephen Wolfram。(这本书大体看了一下,有些思想我之前倒是想过,却没有这么深入细致的去研究) 记几个关键字,后边研究一下 装一下panl9操作系统,配置看一下那些特性,代码应该不会看。 Sam 和 Acme编辑器大体看看。 顺带知道一个操作系统Oberon,发现搜着看着东西越来越多了。 最近又看了篇文章,加深了对erlang的理解,之前还学过erlang语法,有时间再看看vm。 立了flag,不知道能不能看,发现要弄的东西不懂就难搞,不知道能不能坚持下来。下午有时间把plan9装一下。

Continue

学习的问题发现现在能很好的接受了,我开始认真学习数学。并且不去急功近利的学,还回头复习回忆,让学习效率最大化。 听了国外的机器学习基础课,国外讲的课还挺好,顺带看字幕学英语,听力也练了一点。因为讲课的内容相关性很高,所以词汇啥的很固定,学久了听这些内容就简单一点。 第二种机器学习的,相对篇应用的,也开始了。 每天背单词,收获也不少。 最近心态炸裂是工作上的事,全是坑,发现国企风格还是适应不了。现在打疫苗,同学群里的还是疫苗攻击啥的,他们都不打。不明白灭火了的疫苗还攻击啥,殊不知的是其他疫苗也有副作用,也没看不打。我跟我同学交流的最多,我发现他们很多事情就喜欢跟风,完全不会自己思考,而且总是想那个几件事。 所以独立思考的能力很重要。听网课,特别是你不清楚的领域的时候,确实能学到很多东西。我觉得之所以会选择这个模式,主要还是专业人事讲课的时候会特别系统,还有是总结后的东西,所以你能学到很多。虽然你自己也能思考,但是不够系统和细致(跨行导致总有你不知道的东西)。我买了一节便宜创业网课,加了群。里边的人听完课竟然跟跪舔一样一样的,让我十分不理解。我也觉得很值,讲的挺好,但我却没觉得有这么好。如果我站在这个角度,我也会思考这些东西,只是没有这些细致,还有全面。他们很多也是学习别人的书,还有借鉴自己经验的后的提炼。 最近还有一件还不错的事,就是开始做编辑器了。看看做一个开发进度的vlog,督促自己坚持下来吧。

Continue

最近公司在找项目管理的软件,调研了一上午,然后给了几个方案。 一个是是否花钱,市面上的大部分都是花钱 第二个是是否本地部署,现在大部分不能本地部署,支持部署的也是花钱 之前用禅道,不支持多级子任务,不再使用,所以方案必须支持这点。 第三个是否能用破解版。 然后可以用破解版,我首先部署了jira,最后发现也不支持,插件好像也不行,官网也有人说了好几年了。 最后只能上redmine,这个系统勾起了我遥远的回忆,好像正式工作第一家就是用的这个系统,那时候我还改过ruby代码。这个我通过一个演示系统提前知道能多级。 下午又把这个redmine给部署了。这里简单总结一下,不是最优方案,但是内部使用基本没大问题。 使用的方案是,thin+nignx。thin类似于python中uwsgi等的那些。下边的方法是回忆着来的,不一定全,先记一波,以后部署再补充。 redmin安装查看官网教程足够。 安装完有测试启动方式bundle exec rails server webrick -e production,这个肯定不能用在正式环境,可能单线程,没验证 ruby的安装使用的rvm,类似Python里pyenv。 thin安装 gem install thin thin install 能安装开机启动脚本,和etc下的目录。/etc/rc.d/thin thin命令能生成配置文件,我直接复制的网上改的 cat /etc/thin/redmine.yml pid: tmp/pids/thin.pid wait: 30 timeout: 30 log: log/thin.log max_conns: 1024 require: [] environment: production max_persistent_conns: 512 servers: 4 daemonize: true user: redmine #socket: /tmp/thin.sock address: 0.0.0.0 port: 8080 chdir: /data/redmine-4.1 这个配置刚开始怎么试sock都不行,后来端口也不行,我查了一下发现是selinux没关闭,关闭后再没试。让他们先通过thin起一个端口去验证了。 /etc/rc.d/thin start /etc/rc.d/thin stop 这里会有问题 /usr/local/rvm/gems/ruby-2.6.6/gems/activesupport-5.2.4.5/lib/active_support/dependencies.rb:291:in `require': cannot load such file -- thin/connection (LoadError) 查了一下发现得在Gemfile文件里加上thin的引用,没写过ruby,看不懂,添加 gem "thin" 后 启动正常 nginx配置 这里配置基本复制的网上的,静态文件还是用的thin的,没走nginx,因为懒得去修改静态文件目录的权限了。 /etc/nginx/conf.d/redmine.conf upstream thin_cluster { # server unix:/tmp/thin.0.sock; # server unix:/tmp/thin.1.sock; # server unix:/tmp/thin.2.sock; # server unix:/tmp/thin.3.sock; server 127.0.0.1:8080; server 127.0.0.1:8081; server 127.0.0.1:8082; server 127.0.0.1:8083; } server { listen 10.10.12.240:3000; server_name 10.10.12.240; access_log /var/log/nginx/redmine-proxy-access; error_log /var/log/nginx/redmine-proxy-error; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; client_max_body_size 100m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; # root /data/redmine-4.1/public; proxy_redirect off; location / { # try_files $uri/index.html $uri.html $uri @cluster; try_files $uri.html $uri @cluster; } location @cluster { proxy_pass http://thin_cluster; } }

Continue

最近又心血来潮研究图形学去了,啃3d开发去了。n年前研究过,那时候心性不行,感觉太难了,搞了一半就放弃了。现在又准备重新研究了,目标定位到OpenGL es上了。 主要OpenGL ES支持手机平台,而且属于opengl的子集,没有历史包袱。虽然可能很多高级特效之类的不支持,但是应该也用不到,可能我学习的速度还赶不上硬件和opengl发展速度,考虑这些就考虑多了。从网上介绍来说es是可以在桌面上用的,但是网上搜了一下都需要模拟器。而我看的书是《opengl es 3.0 编程指南》这个书只是说libglesv2的lib版本,这个我就很疑惑。而且还推荐了很多桌面上的模拟器,用来跑示例,我这还想着桌面的也用es写,但感觉模拟器应该也能一起编译打包。 然后我搜了一下lib,发现libgles2已经安装了,搜的libgles,好多包安装过了。然后我看了一下头文件,GLES3/gl3.h也有。libegl也有安装。我就直接cmake了示例代码,然后运行成功了。 所以具体是这个包起作用,还是还有别的包,我也不太清楚,也懒得验证了。然后我就通过包信息里的官方网址,发现还是NVIDIA的github。里边头文件确实有gles3的,看了readme也没说支持3.0的es。大概率是支持了。 具体windows可能是需要模拟器了吧,或许也有显卡公司写的lib。

Continue

临时看个问题,对matplotlib没有了解,基本纯网上搜了搜。暂时先记录一下。 是使用 pandas读了一个excel表,然后加了index字段,是个日期,数据保存在变量df里,可以直接调用df.plot()进行画图,我是有点震惊的。这是因为这几个库联用的多嘛。画出来的图横坐标日期不能全显示,然后想全显示出来。 第一反应就是日期太长了,然后找可以调整角度的函数,用xticks修改角度,不好用。然后发现xticks可以指定横坐标显示位置,显示映射啥的。 x=np.arange(0,12,1)生成一个选择的映射,label传入全部十二个日期。然后就显示全面了。plt.xticks(x, mon, rotation=90) xticks参数还可以指定Text类型的参数,进行文本样式的设置。 最近让搞R语言,在看R语言画图的功能。因为看我对python的matplotlib,numpy,pandas这些库都没经验,领导之前会用R,就让我直接写R了。感觉搞这些工具,但不会统计的东西,搞起来总感觉是在隔靴子挠痒。

Continue

准备玩点高级一点的东西了,xelatex看着不错,搜了一番,感觉texlive比较不错。也下载了Texmacs,那个只支持原生的latex,xelatex的导入导出不支持。现在已经懒得折腾东西,但是想想还是折腾折腾吧。直接apt安装的版本是2017的,感觉有点老,所以还是装个新的玩吧。 安装基本靠官网文档 首先下载一个安装工具,解压,执行perl install-tl 。 这里要看一下安装目录是否有权限,texlive的安装不需要root权限,但是默认安装目录是/usr/local/texlive/2020,最后一级目录是区分不同版本的,所以只要创建texlive目录,然后保证有权限就行了。 然后i开始安装,看着好像要下载四千多个文件,我使用的默认的镜像,速度还挺快的。主要看下载安装工具的时候速度就挺快。 还有gui版本的安装工具,包括安装完成后gui工具的使用,这个需要perl的tk库,sudo apt-get install perl-tk进行安装。比如:tlmgr -gui 更新系统使用命令:tlmgr update -all

Continue

看网上教程,最后选择了这种rpc调用的方式,这种方式可以提前启动R虚拟机,R程序造成的崩溃不会影响到java程序。另一种方式是JRI,全名是Java/R Interface 第一步R安装Rserve,这里有点问题就是最好root权限安装,我看文档这种方式需要源码安装,并且有$R_HOME/bin权限。所以直接root启动r然后安装了,install.packages("Rserve")。这里试了一下R INSTALL 好像只能安装本地的包。最后决定安装官网的最新版本,目前还没在CRAN中。install.packages("Rserve",,"http://rforge.net") 第二步启动R server,命令行执行 R CMD Rserve,这个就是上边说的daemon模式,文档说只支持unix系统,windows还不行。默认启动端口6311.看参数好像只能指定端口,不支持指定IP。看文档只能通过配置文件去指定是否允许远程访问。写一行remote enable就行了,我没在默认/etc/Rserv.conf 改,直接参数指定的文件。 第三步java客户端连接,这里需要两个jar包,官方网站能下载,看版本有点老,安装包也带。目录在 /home/xx/R/x86_64-pc-linux-gnu-library/4.0/Rserve/java/ 包的安装目录下。然后javac -classpath ./REngine.jar:./Rserve.jar:. test.java,测试运行一下没啥问题。数据类型的转换问题还需要详细研究一下。

Continue

代码基本网上搜的,没啥贴的,写一下思路,有需要的自己网上搜就行了。主要是自己看的电子书是扫描版的pdf,里边全是图片,超级大,好几百M。之前找了一圈,靠谱软件需要收费,不靠谱个人软件只能windwos下用。于是自己搞吧,发现也不太难。 第一步是把pdf提取图片 用到pymupdf库,这个是封装的c的接口,感觉写个pdf软件也不难啊,都有开源库,不知道为啥他们还收费。我提取图片发现,好多水印图片是直接用pdf编辑软件加上的,导致水印可以直接从提取的图片里边删掉,这个挺好。 第二步,把图片二值化 这里用到opencv,用到cv2.threshold。这个阈值不太好设置,可以使用cv2.THRESH_OTSU,提取一个分析值,但是这个不是最优的,有的书是半彩页的,书边会有浅色的背景之类,或者重点颜色等。这个有分析建议值之后,还需要自己试一下哪个值比较好。 第三部,把图片生成新pdf 这个还是用pymupdf库,基本都差不多。 没想到的是压缩率还挺低,一百多MB的pdf能压缩成十多兆。可能也是之前的pdf质量比较高吧。但是我看了一下压缩后的,清晰度一点不减少。有背景色的地方,选择阈值合适,背景色也都过滤掉了,文字不受影响。

Continue

这两次比赛都没获得好成绩,但还是学到很多东西,也不算白参加。 第一次参加华为的比赛,跑偏了,别人都hash table搞的,之前讲解的时候,让我们去看看mysql的日志索引。然后我去研究排序索引去了,还提前写了代码,参加到一半,发现不是那么回事,弃赛了。因为剩下的时间感觉重头写不完了。 接着参加阿里的比赛,hash table研究了一番,libpmem代码看了,书也看了,信心满满。但发现差距还是很大,有很多想法,但是实现的比较慢,因为c总归不熟练,啥都要自己实现,之前没有经验,所以会慢很多,导致还是没进入前十。题目还涉及内存回收利用的问题,我这里还有合并的方案也没实现,总归这方面涉及的也少,有想法实现起来也慢,导致成绩没想象的好。 不过这两次学到东西挺多的,主要c方面,系统编程方面,查了老多linux文档,集中在磁盘,内存,文件,线程方面的接口。还有pmem方面的知识,索引方面的知识,感觉这么半年,学的东西赶上工作一年写c学的东西。还有c的调试gdb,性能分析,还有c的一些优化,simd的使用。目前就想到这些,发现还是有压力的时候学的多,如果自己看书,学了也不会有这么深刻的理解。 虽然这两次比赛成绩不理想,但进步很多,有下次机会还会参加,名次也会慢慢提升。最近在研究数据统计分析的东西,发现是个大坑,不知道为啥,开始想研究机器学习了,之前一直感觉没啥意思。

Continue