lua工具库penlight--04路径和目录】的更多相关文章

lua的设计目标是嵌入式语言,所以和其它动态语言(如python.ruby)相比其自带的库缺少很多实用功能. 好在有lua社区有Penlight,为lua提供了许多强大的功能,接下来的几篇博客,我会简译Penlight的wiki. 目的 常有人说lua不带电池.因为lua的目标是可以运行在各种机器上的简洁语言,(有些机器甚至不 支持布尔系统).lua类似于操作系统内核(注:即不是完整的系统,只有基本功能),lua的作者 并没有把围绕lua开发完整的生态系统看做自己的职责.这是社区的角色. 软件设…
使用路径 程序不应该依赖于奇葩的系统,这样你的代码会难以阅读和移植.最糟糕的是硬编码的路径, windows和Unix的路径分隔符正好相反.最好使用path.join,它可以帮助你解决这个问题. pl.path提供了与Python中os.path里相同的功能. > p = 'c:\\bonzo\\DOG.txt'  > = path.normcase (p)  ---> only makes sense on Windows c:\bonzo\dog.txt > = path.sp…
词法扫描 虽然 Lua 的字符串模式匹配是非常强大,但需要更强大的东西.pl.lexer.scan可以提供标记字符串,按标记机分类数字.字符串等. > lua -lpl Lua 5.1.4  Copyright (C) 1994-2008 Lua.org, PUC-Rio > tok = lexer.scan 'alpha = sin(1.5)' > = tok() iden    alpha > = tok() =       = > = tok() iden    sin…
模块化和粒度 在理想的世界,一个程序应该只加载它需要的库.Penlight需要额外100 Kb 的字节码来工作.它是简单但却乏味要加载你需要什么: local data = require 'pl.data' local List = require 'pl.List' local array2d = require 'pl.array2d' local seq = require 'pl.seq' local utils = require 'pl.utils' 这是我在Penlight里一直…
额外的库 在这一节中的库不再被认为是Penlight的核心部分,但在需要时,仍提供专门的功能. 简单的输入的模式 Lua 的字符串模式匹配是非常强大,通常您将不需要传统的正则表达式库.即便如此,有时 Lua 代码结束看上去像 Perl,因为字符串模式不容易阅读,尤其是对普通读者而言.这段代码需要了解三种不同的日期格式: -- parsing dates using Lua string patterns months={Jan=1,Feb=2,Mar=3,Apr=4,May=5,Jun=6, J…
列表压缩 列表压缩是以紧凑的方式通过指定的元素创建表.在 Python里,你可以说: ls = [x for x in range(5)]  # == [0,1,2,3,4] 在 Lua,使用pl.comprehension : > C = require('pl.comprehension').new() > = C ('x for x=1,10') () {1,2,3,4,5,6,7,8,9,10} C是一个函数,它将一个列表字符串编译成一个函数.在这种情况下,该函数有没有参数.考虑一个字…
类Python的List lua的优美之处在于把数组和关联数组都用table实现了(Python中叫list和dict,C++中叫vector和map). 一般我们把数字索引的table叫做list.penlight里的List模仿了Python,看起来从Python借鉴是个好主意. 下面是一个List的例子,List实现了__tostirng,因此可以输出自己.  ) ),},}{,,,},){,,,,} ,,,} )  ) true > = l:reverse()  ---> note: …
函数编程 序列 Lua 迭代器 (最简单的形式) 是一个函数,可以多次调用返回一个或多个值.for in语句理解迭代器和循环,直到该函数将返回nil. Lua有标准的序列迭代器 (ipairs和pairs) , io.lines是返回文件中的所有行的迭代器.在的Penlight库中,这种迭代器也称为序列.单个值 (比如从io.lines ) 的序列称为单值,由pairs定义的序列是双值. pl.seq提供一些有用的迭代器和一些操作序列的函数.乍一看本示例尝试在Lua写里 Python (有序列)…
这篇太长了,分了两部分.(这个是机器翻译之后我又校对了一下,以后的都这样,人工翻译太累了.) 读数据文件 首先考虑清楚,你的确需要一个自定义的文件读入器吗?如果是,你能确定有能力写好吗? 正确,稳健,快速,当如先得把第一项处理好. 在Unix世界里常见的数据文件夹是配置文件.在Java世界里也被叫做属性文件. # Read timeout in seconds read.timeout=10 # Write timeout in seconds write.timeout=10 下面是简单的Lu…
创建和显示时间 Date类提过了简洁的使用date和time的方法.它依赖于os.date和os.time. Date对象可以通过table创建,如果os.date,同时提过了获取和设置date 成员变量的元方法. > d = Date {year = 2011, month = 3, day = 2 } > = d 2011-03-02 12:00:00 > = d:month(),d:year(),d:day()  3    2011    2 > d:month(4) >…
字符串提取函数 这些方法也是从Python借鉴来的,但索引从1开始.stringx定义了一些函数如isalpha和isdigit, 用来判断字母和数字:startswith和endswith可以方便用来查找子串(endswith可以用来判断后缀 ,如f:endswith{'.bat','.exe','.cmd'}):还有对齐方法just和除去空白符的strip.  > stringx.import() > ('bonzo.dog'):endswith {'.dog','.cat'} true…
执行一系列的参数 类型说明符也可以 是' ('MIN '..' MAX)' 的形式. local lapp = require 'pl.lapp' local args = lapp [[ Setting ranges <x> (1..10)  A number from 1 to 10 <y> (-5..1e6) Bigger range ]] print(args.x,args.y) 下面的意思是大与或等于 MIN 和小于或等于MAX :没有规定强制参数必须是整数. 类型说明符…
luna工具库 概述 luna库提供了几个lua开发的常见辅助功能: lua/c++绑定 lua序列化与反序列化 变长整数编码,用于lua序列化,当然也可以方便的用于其他场合 这里把代码编译成了动态库,由于代码非常简单,实际使用时也可以简单的复制文件到自己的工程.lua_archiver引用了lz4库用于数据压缩(lz4.h+lz4.c). lua/c++绑定库(luna.h, luna.cpp)支持Windows, Linux, macOS三平台,默认的luna.h实现需C++14支持.如果编…
LINUX动态库(.SO)搜索路径(目录)设置方法 [root@VM_0_11_centos ld.so.conf.d]# cat /etc/ld.so.confinclude ld.so.conf.d/*.conf[root@VM_0_11_centos ld.so.conf.d]# ll -as /etc/ld.so.conf.d/total 36 4 drwxr-xr-x. 2 root root 4096 Mar 6 21:39 .12 drwxr-xr-x. 99 root root…
前言 自己常用的工具库, C++ 和C语言实现 使用cmake维护的项目 持续更新..... 提供使用范例, 详见example文件夹 windows使用的VS通过了的编译. Linux(Ubuntu)使用的是 clang++ 10.0 欢迎留言交流 下载地址 gitee 和 github 文件读写接口 /// ---------------------------------------------------------------------------------------- ///…
github : https://github.com/uustoboy/base_mixins ( 有坑慎用 ) 项目截图: _base_mixins.scss 混合宏的引入文件; _setting_mixins.scss  设置默认参数文件; _template_mixins.scss 模板混合宏文件(引入template全部文件,其实还没有完全开发完成有待成长!~~); _utensil_mixins.scss  基础混合宏文件 (引入utilities全部文件); utilities引入…
主要内容: 1.Linux动态库.so搜索路径 编译目标代码时指定的动态库搜索路径: 环境变量LD_LIBRARY_PATH指定的动态库搜索路径: 配置文件/etc/ld.so.conf中指定的动态库搜索路径: 默认的动态库搜索路径/lib: 默认的动态库搜索路径/usr/lib. 2.通过实例验证五种动态库的搜索路径以及其先后顺序 众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib.动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库,并且该 动 态库还未加载到…
[转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceManager解析二进制资源文件 小看RESX资源文件的Designer.cs文件 返回目录 程序集清单资源 在程序集中嵌入资源的最简单方法是什么?那就是使用Visual Studio中的“嵌入式资源(Embedded Resource)”创建选项,相当于使用csc的”/resource”参数.具体步…
lua os库提供了简单的跟操作系统有关的功能 1.os.clock() 返回程序所运行使用的时间 local nowTime = os.clock() print("now time is ",nowTime) local s = 0 for i = 1,100000000 do s =s+i end spendTime = os.clock() - nowTime print(string.format("Spend time is : %.2f\n", spe…
[Linux开发]OpenCV在ARM-linux上的移植过程遇到的问题3-共享库中嵌套库居然带路径[未解决] 标签(空格分隔): [Linux开发] 移植opencv到tq2440 一.下载opencv及cmake 1,download opencv_2.3.1 OpenCV-2.3.1a.tar.bz2 下载链接:http://opencv.org/downloads.html 2,download cmake //cmake-3.1.0.tar.gz //without gui cmake…
DevUI是一支兼具设计视角和工程视角的团队,服务于华为云DevCloud平台和华为内部数个中后台系统,服务于设计师和前端工程师. 官方网站:devui.design Ng组件库:ng-devui(欢迎Star) 官方交流:添加DevUI小助手(devui-official) DevUIHelper插件:DevUIHelper-LSP(欢迎Star) 前言 随着前端生态的繁荣,工具库几乎是高效开发的必需品,lodash/dayjs/numberal等实用的工具库相信大家都用过. 我近期在开发Ca…
概述 在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息. 在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子. 我们先来逐一了解一下主流日志工具. java.util.logging (JUL) JDK1.4开始,通过java.util.logging提供日志功能. 它能满足基本的日志需要,但是功能没有Log4j强大,而且使用范围也没有Log4j广泛. Log4j Log4j是apache的一个开源项目,创始人Ceki Gulcu. Log4j应该说是Java领…
前言. 从2016年4月14日开始,本人着手开发了JHChart图表工具库.经过断断续续的开发,截止到现在,已经实现了折线图.柱状图.饼状图.环形图和表格样式的图表功能.为了方便使用,我已经将一个简单的demo上传到github上面,但是这些显然不够,我们还需要一个更加明了的方式介绍这个库的用法,打造出各种我们需要的效果,如下为至今最新版本教程 集成JHChart 集成JHChart有两种方法 第一种用法简单且版本保持最新,直接去demo中将JHChart库文件夹拖入你的项目中即可 第二种使用c…
特殊情况:用户自定义的头文件使用#include"mylib"时,gcc编译器会从当前目录查找头文件 一.头文件 gcc 在编译时寻找所需要的头文件 :    ※搜寻会从-I开始(gcc 参数,指定头文件搜索位置)    ※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH    ※再找内定目录 /usr/include   /usr/local/include /usr/lib/gcc-lib/i386-li…
Lua包库为lua提供简易的加载及创建模块的方法,由require.module方法及package表组成 1.module (name [, ···]) 功能:建立一个模块. module的处理流程: module(name, cb1, cb2, ...) a. 如果package.loaded[name]是一个table,那么就把这个table作为一个module b. 如果全局变量name是一个table,就把这个全局变量作为一个module c. 当以前两种情况都不存表name时,将新建…
下面是目录结构: pengdl@localhost:~$ tree test/test/├── fun.c├── Fun.h└── t1    └── main.c 1 directory, 3 filespengdl@localhost:~$ fun.c #include <stdio.h> void fun(void) { printf("int the fun\n"); } Fun.h extern void fun(void); main.c #include &l…
在项目开发中,为了跟踪代码的运行情况,常常要使用日志来记录信息.在Java世界,有很多的日志工具库来实现日志功能,避免了我们重复造轮子.我们先来逐一了解一下主流日志工具. 1.java.util.logging (JUL): JDK1.4开始,通过 java.util.logging 提供日志功能.它能满足基本的日志需要,但是功能没有Log4j强大,而且使用范围也没有Log4j广泛. 2.Log4j: Log4j是apache的一个开源项目,创始人Ceki Gulcu. Log4j应该说是Jav…
一.头文件gcc 在编译时如何去寻找所需要的头文件:※所以header file的搜寻会从-I开始※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH※再找内定目录/usr/include/usr/local/include/usr/lib/gcc-lib/i386-linux/2.95.2/include/usr/lib/gcc-lib/i386-linux/2.95.2/……/……/……/……/include/g++…
前两天写了一个动态库,然后试图编译到程序里面去运行,结果发现编译的时候通过gcc的-L参数来指定路径仅仅能让编译通过,运行时还是会出问题的. 比如下面这个例子: main.c是主程序,sum.c中间含有一个函数add,用来执行加法,代码如下: /* * main.c */ #include <stdio.h> int add(int a, int b); int main(int argc,char *argv[]) { printf(,)); ; } /* * sum.c */ int ad…
众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib .动态库被创建后,一般都复制到这两个目录中.当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了.在 Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定. 方法一:在配置文件 /etc/ld.so.conf 中指定动态库搜索路径.每次编辑…