nix

从 Python 第三方进度条库 tqdm 谈起 (转载)

痞子三分冷 提交于 2020-04-30 15:07:19
原文地址: https://blog.ernest.me/post/python-progress-bar tqdm 最近一款新的进度条 tqdm 库比较热门,声称比老版的 python-progressbar 库的单次响应时间提高了 10 倍以上。 Overhead is low -- about 60ns per iteration (80ns with gui=True). By comparison, the well established ProgressBar has an 800ns/iter overhead. 初读其源码,组织结构明显继承 python-progressbar ,只是主代码行数从 357 提升到了 614。10 倍性能提升的奥妙在哪里呢? 在解答这个问题之前,我想先用这篇文章介绍下进度条的原理,然后,根据原理用几行代码实现一个简单的进度条。 progress bar 的原理 其实进度条的原理十分的简单,无非就是在 shell 中不断重写当前输出。 这时就不得不提到文本系统中的控制符。我们挑跟这次有关的看一下。 \r = CR (Carriage Return) // moves the cursor to the beginning of the line without advancing to the next line(该控制符告诉输出端

[转帖]【字符集】zh_CN.UTF-8 zh_CN.utf8 en_US.UTF-8 en_US.utf8

耗尽温柔 提交于 2020-04-20 14:07:04
【字符集】zh_CN.UTF-8 zh_CN.utf8 en_US.UTF-8 en_US.utf8 赏金Micheal 关注 2020.03.25 23:47:18字数 615阅读 12 en_US.UTF-8、zh_CN.UTF-8叫做字符集,就是 'A'、'B'、'中'、'国' 等对应的整数值。 en_US.UTF-8只包含了ASCII码,zh_CN.UTF-8包含了6000多个汉字? 如果是这样的话,那所谓UTF-8,就是把这些整数,编写成一串字节的方法? UTF-8 是编码方式,en_US.UTF-8 和 zh_CN.UTF-8 是语言环境,也就是字符集。 en_US.UTF-8 和 zh_CN.UTF-8 包含的字符数量是基本上一样的,大概是七万个汉字,编码都是 UTF-8 编码,字符集是 Unicode。 语言环境的差别就是另一回事了,中国人和外国人表示时间,数字,习惯都不一样,所以必须区分开。 大部分程序根据语言环境变量来选择界面的语言是中文还是英文。 所以一般linux系统的语言环境设置成:export LANG=zh_CN.UTF-8,代表中国人使用的Unicode字符集。 en_US.UTF-8:你说英语,你在美国,字符集是utf-8 zh_CN.UTF-8:你说中文,你在中国,字符集是utf-8 zh_CN.UTF-8是正确的名称,zh_CN

炼金术(8): 开发和发布的并行

谁说我不能喝 提交于 2020-04-18 05:58:46
在一个技术群里,遇到一个网友提了一个问题,这种场景我曾经遇到过,提供一种解法,这需要去构建,但是如果需要的是【立即有效】的解法,可能不存在。 一个网友的问题: 为了赶时间,dev和pub并行,我一天发五六版,不是在发版就是在发版的路上,就是发版太频繁 导致我没时间开发。 问题其实在于业务方,业务为了给领导看,我软件没做好,他们就用,我现在一边开发一边维护一个线上版本,他们还在往里录入数据,导致的结果就是,问题要马上解决,解决后要发版本然后我还在开发。 怎么办? 首先,源代码的分支,和部署的环境需要隔离。 源代码要有不同分支,发布的分支上,只修复BUG。开发的分支是新功能。 部署的环境要有三套,一套是开发的,一套是测试的,一套是正式的。 请使用好的git版本线查看工具,例如sublimemerge 你在Git的开发分支上开发新功能,部署的时候只能部署到开发环境。 你在Git的发布分支上修复BUG,部署的时候先部署到测试环境测试,测试验证通过了再发布到正式环境。 其次,工具链要做成自动化: 配置不同环境的部署信息,例如用JSON配置好某个环境的所有依赖的配置信息+账号密码,这个配置文件不提交到git仓库。 编写部署的脚本,一键部署某个Git分支的当前代码到某个部署环境上去。 如果进一步,可以将自动化部署配置到内部的持续集成(CI)工具上,但是,这要仔细考虑密码的存储问题。确保安全

PHP多进程、信号量及孤儿进程和僵尸进程

徘徊边缘 提交于 2020-04-09 04:52:20
PHP多进程、信号量及孤儿进程和僵尸进程 实际上PHP是有多线程的,只是很多人不常用。使用PHP的多线程首先需要下载安装一个线程安全版本(ZTS版本)的PHP,然后再安装pecl的 pthread 扩展。 实际上PHP是有多进程的,有一些人再用,总体来说php的多进程还算凑合,只需要在安装PHP的时候开启 pcntl 模块(是不是跟UNIX中的fcntl有点儿…. ….)即可。在*NIX下,在终端命令行下使用 php -m 就可以看到是否开启了 pcntl 模块。 所以我们只说php的多进程,至于php多线程就暂时放到一边儿。 注意:不要在apache或者fpm环境下使用php多进程,这将会产生不可预估的后果。 PHP多进程初探 进程是程序执行的实例,举个例子有个程序叫做 “ 病毒.exe ”,这个程序平时是以文件形式存储在硬盘上,当你双击运行后,就会形成一个该程序的进程。系统会给每一个进程分配一个唯一的非负整数用来标记进程,这个数字称作进程ID。当该进程被杀死或终止后,其进程ID就会被系统回收,然后分配给新的其余的进程。 说了这么多,这鬼东西有什么用吗?我平时用CI、YII写个CURD跟这个也没啥关联啊。实际上,如果你了解APACHE PHP MOD或者FPM就知道这些东西就是多进程实现的。以FPM为例,一般都是nginx作为http服务器挡在最前面

在C中打印前导0?

人走茶凉 提交于 2020-03-17 19:53:43
某厂面试归来,发现自己落伍了!>>> 我试图找到一种打印前导0的好方法,例如邮政编码为01001。 虽然该数字将存储为1001,但是这样做的一种好方法是什么? 我想使用任一种case语句/ if,然后找出数字的位数,然后将其转换为带有额外0的char数组以进行打印,但我忍不住想了想用我无法理解的printf格式语法。 #1楼 printf("%05d", zipCode); 0 表示要填充的内容, 5 表示整数的长度。 例如,如果您使用 "%02d" (对日期有用),则只会在“ 1”列中的数字上填充零,即( 06 而不是 6 )。 示例2, "%03d" 将在one列中填充2个零作为一个数字,在tens列中填充1个零作为一个数字。 即。 (将7填充到 007 ,将17填充到 017 )。 #2楼 printf允许各种格式设置选项。 例如: printf("leading zeros %05d", 123); #3楼 您在最小字段宽度之前放置零: printf("%05d",zipcode); #4楼 如果您在* NIX机器上: man 3 printf 这将显示一个手册页,类似于: 0该值应为零填充。 对于d,i,o,u,x,X,a,A,e,E,f,F,g和G转换,转换后的值在左侧填充零而不是空白。 如果同时出现0和-标志,则忽略0标志。 如果通过数字转换(d,i,o,u,x和X

如何从当前Linux shell运行具有不同工作目录的程序?

∥☆過路亽.° 提交于 2020-03-16 22:25:21
某厂面试归来,发现自己落伍了!>>> 使用Linux shell,如何从当前工作目录启动具有不同工作目录的程序? 例如,我有一个二进制文件 helloworld ,它在当前目录中创建文件 hello-world.txt 。 该文件位于目录 /a 。 目前我在目录 /b 。 我想启动我的程序运行 ../a/helloworld 并在第三个目录 /c 某处获取 hello-world.txt 。 #1楼 为什么不保持简单 cd SOME_PATH && run_some_command && cd - 最后一个'cd'命令将带你回到最后一个pwd目录。 这适用于所有* nix系统。 #2楼 一个不需要子shell并且内置于bash的选项 (pushd SOME_PATH && run_stuff; popd) 演示: $ pwd /home/abhijit $ pushd /tmp # directory changed $ pwd /tmp $ popd $ pwd /home/abhijit #3楼 只需将最后一个“&&”更改为“;” 无论命令失败还是成功,它都会回来: cd SOME_PATH && run_some_command ; cd - #4楼 从当前目录提供执行命令的脚本目录的完整路径 /root/server/user/home/bin/script.sh #5楼

How do I override a Haskell package with a git / local package with Nix?

耗尽温柔 提交于 2020-03-14 05:20:04
问题 Essentially I'm using this: default.nix { nixpkgs ? import <nixpkgs> {}, compiler ? "ghc864" }: nixpkgs.pkgs.haskell.packages.${compiler}.callPackage ./gitchapter.nix { } gitchapter.nix { mkDerivation, base, directory, extra, filepath, foldl, hpack , HUnit, mtl, optparse-applicative, pandoc-include-code, parsec , pretty-simple, process, QuickCheck, rainbow, regex-pcre , regex-posix, safe, stdenv, string-conversions, system-filepath , template-haskell, text, transformers, turtle, unix ,

How do I override a Haskell package with a git / local package with Nix?

依然范特西╮ 提交于 2020-03-14 05:19:08
问题 Essentially I'm using this: default.nix { nixpkgs ? import <nixpkgs> {}, compiler ? "ghc864" }: nixpkgs.pkgs.haskell.packages.${compiler}.callPackage ./gitchapter.nix { } gitchapter.nix { mkDerivation, base, directory, extra, filepath, foldl, hpack , HUnit, mtl, optparse-applicative, pandoc-include-code, parsec , pretty-simple, process, QuickCheck, rainbow, regex-pcre , regex-posix, safe, stdenv, string-conversions, system-filepath , template-haskell, text, transformers, turtle, unix ,

如何更改为旧版本的Node.js

前提是你 提交于 2020-02-27 10:54:57
我在Ubuntu 10.10上运行Node.js版本 v0.5.9-pre 。 我想使用 v0.5.0-pre 版本。 如何回滚到旧版本的节点? #1楼 用于管理Node的多个版本的另一个好的库是N: https : //github.com/visionmedia/n #2楼 * NIX(Linux,OS X等) 使用 n ,这是一个非常简单的Node版本管理器,可以通过npm安装。 假设您要Node.js v0.10.x来构建 Atom 。 npm install -g n # Install n globally n 0.10.33 # Install and use v0.10.33 Usage: n # Output versions installed n latest # Install or activate the latest node release n stable # Install or activate the latest stable node release n <version> # Install node <version> n use <version> [args ...] # Execute node <version> with [args ...] n bin <version> # Output bin path for

Nix: Building `waf` produces a file, but I seem to need a folder

不问归期 提交于 2020-01-24 19:57:28
问题 I've cloned the nixpkgs repo. From the top of that repo, I can run nix-build -A waf to build waf , and nix-env -f . -iA waf to make waf part of my user environment. Neither complains -- but afterward I am still unable to call waf : [jeff@jbb-dell:~/nix/nixpkgs]$ waf waf: command not found [jeff@jbb-dell:~/nix/nixpkgs]$ Most packages, when I build them using nix-build -A , produce a symlink called result that goes to a folder containing the executable in question. Strangely, though, in waf 's