分类:编程

计算机(网络)的文章分为了三部分:

  • 计算机科学,收集所有计算机科学理论相关的文章,包括算法、复杂性等。更偏重于理论基础。
  • 编程相关,收集了所有与写代码相关的文章,更偏重于工程实践。
  • IT 技术,其他相关文章,更偏重于产品。

此为第二部分。

常用标签:

C++ 55 Matlab 26 python 23 Excel 20 VBA 14 数据库 12 办公自动化 10 folly 9 编程和算法效率 9 Linux 8

  1. 编程 » Linux
    多用户的服务器,/tmp文件夹就会特别乱。动则成千上万的文件,连删除清空都很困难,因为rm /tmp/* -rf导致命令行过长。
  2. 编程 » 深度学习, torch
    在写一个 torch 模型时,训练时被提示:
  3. 编程 » python, 单元测试
    unittest 是 python 官方的单元测试工具。最近发现一个之前没注意到的盲区:
  4. 编程 » Python
    类型系统可以提前检查代码准确性,为中大型项目提供保障。所以现在大型编程语言都争先恐后地为程序添加类型系统。
  5. 编程 » VIM
    vim 里对代码简单对齐缩进,可以选定文本区域后用快捷键=。如果全文对齐,可以用ggvG=ggvG可以选中全文)。但对于某些复杂的代码(比如html),其对齐可能会乱。
  6. 安装 selenium ,使用 requestium 来调用 selenium 程序更为简单,因此可一起安装:
  7. 编程 » C++, log
    先编译 libfmt.a :
  8. 编程 » Linux, rsync
    在一个rsync命令同步文件夹时:
  9. 编程 » Python
    在 Python 里,我们可以直接用 os.system 来执行系统命令(假设下面的 strip 是一个可以处理多个文件的第三者程序):
  10. 编程 » Python
    今天写一段程序时遇到一个问题,查了好一会才搞清楚。代码可以简化为下面这个小代码:
  11. 编程 » javascript
    Javascript 在很多地方会出现字符串隐私转换,需要特别留意。
  12. 编程 » python, requests, django
    在 Python 里,我们可以用request.post提交json数据:
  13. 编程 » pandas, python
    一个最直接的方法如下,最后得到的s2就是一个普通的pandas.DataFrame,可以继续处理:
  14. 编程 » django, html, http, axios
    我们用访问网页动态数据时,经常会提交一些参数,比如用axios.get
  15. 最近写一个 vue 的写法:
  16. 在写代码过程中,会定义一些变量但没有用,比如为了保持函数参数原型:
  17. 编程 » Python, numpy
    今天写 Python 代码时遇到一个恶心的 bug ,花了好一会才定位和搞清楚。我的目标是寻找第一个非 NAN 的数的位置(其中 array 是一个 numpy 向量),很自然有下面实现:
  18. 编程 » Python库
    Python 的官方自带库json库处理 JSON 很方便,但它只支持标准的 JSON 格式。rapidjson 库来自于 json 的 C++库,速度比json库快五倍,而且支持一些非标准的 JSON 字符串。
  19. 编程 » Python
    在 Python 中,有时候为了获取当前运行的脚本的同目录下的另外一个文件,会这么写:
  20. 命令行参数的初步说明,请参考argparse 模块用法实例详解,写的很清晰而详细。
  21. 编程 » pandas, numpy, Python, C++
    首先任意定义一个结构,注意不要用 std::string 非平凡布局的变量,用 char[] 代替:
  22. 编程 » vim
    vim 有一个注释相关的插件 nerdcommenter ,特别好用。可以使用<leader>c快速切换注释状态(不是注释就改成注释,已经是注释则取消注释):
  23. C++对一个有序序列[first, last)firstlast都是iterator,可简单理解为位置指针),以及指定值v,标准库直接提供二分查找的函数std::lower_boundstd::upper_bould
  24. 编程 » xml, python
    在升级 django-wiki 后, Python 的 markdown 库里爆出来一个错误:
  25. 编程 » C++, fmt
    最近遇到一个诡异的问题,一个程序经常卡死。最后定位到 fmt 和下面简单的例子:
  26. 编程 » django, requests, python
    这里的 requests 是指 Python 的 requests 包。
  27. 编程 » C++
    在实现C++中非阻塞式的用户输入中发现,在没有设置in.sync_with_stdio(false)时,in.rdbuf()里面总是空的。
  28. 编程 » Bash
    BASH 的一些笔记。
  29. 编程 » C++
    如果我们用std::getline或者简单的std::cin >>获取用户输入,有一个问题是,它会阻塞掉整个程序,用户必须有输入后才能继续执行。如果这个输入是单独的线程,它还会阻止整个程序的退出。
  30. 编程 » C++, C++标准库
    std::vector有两个大小:
  31. 在 Python 中操作文件或字符串时,有时候会碰到 UnicodeDecodeError 异常:
  32. 主要形式是下面三种。后面两种实际指向同一个位置(如果path是一个已存在的文件夹),但处理结果会有所差异。
  33. 其实moment.js 官方主页已经很详细和清晰了,这里做一下笔记加强记忆。
  34. datetime 是 Python 的标准库:
  35. 编程 » Python
    在 Python3 以上,通常说的字符串是指unicode字符串,以下将不再重复强调。
  36. 编程 » Python, 并行计算
    核心就是threading.Thread
  37. Pyhon 的抽象基类( abstruct base class )库abc定义了类似于 C++的纯虚函数的功能:
  38. 编程 » C++, popen
    popen函数可以获取比std::system函数更详细的程序输出。只是正常调用 popen 只能获取 stdout 的输出,而 stderr 的输出被忽略。
  39. 编程 » Python
    imp.load_source在动态载入 python 模块时非常有用,但需要注意其特性。
  40. 编程 » C++, 编译链接
    最近升级系统,出现好多莫名其妙的问题。其中一个便是 G++编译后,发现其中一个动态链接库引用了绝对地址。正常情况下运行ldd bin/auto应该是下面的结果:
  41. 编程 » pytorch, C++
    目前 pytorch 已经升级到了 1.7.0 ,但在 ubuntu 20.04 下有一个非常诡异的 bug。为此,我们只能自己编译。
  42. 编程 » C++
    现在一般不能用 sprintf 和 strcpy ,推荐使用 snprintf 和 strncpy ,以防止缓冲区溢出:
  43. 编程 » C++, fmt
    C++的fmt::format格式化库,由于效率高,功能强大,相关的 API 已经进入C++20,但其文档和 API 细节无法恭维。
  44. 编程 » C++, 编译
    一个典型的 GCC C++编译过程为:
  45. 编程 » C++, GCC, 编译链接
    C++的链接分为两部分,一个是编译时,一个是运行时。但运行时的行为也收到编译参数的影响。
  46. 编程 » C++, assert, 异常处理
    1)在函数开始处检验传入参数的合法性
  47. 编程 » popen, C++
    我们在 C++里可以这么查看popen是否正常执行:
  48. Python的命令行包argparse内置了-h, --help命令。但它没有分组,和其它的命令混在一起,并且显示在最前面。我更喜欢把它放在单独的「LOG 和帮助」分组:
  49. 编程 » Python, numpy
    numpy 的一维向量:
  50. 编程 » C++
    有两种方法,一种在线程的调用函数内部设置,还有一种是在外部对指定线程变量做设置。
  51. 编程 » Python
    Python 在搜索模块时,依次搜索sys.path里的位置,直到找到模块为止。下面命令可以查看当前的搜索路径:
  52. 编程 » C++
    假设在 C++里有一个数据结构:
  53. 编程 » NaN, Python, Javascript, JSON
    一般而言,在 Python 里:
  54. 编程 » C++, boost, 命令行
    我们用boost的命令行库program_options解析命令行,在解释布尔命令行时使用下面代码:
  55. Python 提供很多语法糖,用起来非常方便。@dataclass 就是其中之一。
  56. 编程 » C++,
    C++的多行宏有标准定义方式,boostfolly库都采用了这种方式:
  57. 编程 » C++, 异步
    C++11 的标准异步库至少包含下面内容:
  58. 编程 » C++, 智能指针
    前面已经提到std::shared_ptr有三个缺陷:
  59. 编程 » C++, Boost, 智能指针
    如果理解了侵入式容器,侵入式智能指针也很容易理解。传统的智能指针std::shared_ptr使用了和数据无关的引用计数,这带来两个问题:
  60. 编程 » C++, Boost, 数据容器
    Boost.Intrusive 是一个很有意思的实现,里面实现了很多侵入式容器,在特定环境下,可以大大提升性能。
  61. 智能指针在现代 C++里用得越多。以前只知道它大致的原理,比如使用引用计数。但很多实现细节并不清楚,最直接的,它是如何实现多线程安全的?今天找了 gnu c++ library 的实现好好看了一下。
  62. 看到网上有片段,提到没有必要自己实现自旋锁,因为标准库的 std::mutex 和现在的自旋锁的实现没有两样。比较好奇,翻了一些资料,试图找到答案。
  63. 编程 » C++, 代码片段
    主要函数是timespec_get,可参考https://zh.cppreference.com/w/c/chrono/timespec_get
  64. 编程 » C++
    要在C++中运行系统命令,可以直接使用std::system函数:
  65. 由 Facebook 开发和维护的 C++库 Folly 提供了自旋锁的实现folly::MicroSpinLock,代码文件地址:https://github.com/facebook/folly/blob/master/folly/synchronization/MicroSpinLock.h
  66. 编程 » folly, C++, 数据容器
    由 Facebook 开发和维护的 C++库 Folly 提供folly::small_vector,代码文件地址:https://github.com/facebook/folly/blob/master/folly/small_vector.h
  67. std::thread是 C++ 11 新引入的标准线程库。在同样是 C++ 11 新引入的 lambda 函数的辅助下,std::thread用起来特别方便:
  68. follyLikely.h文件提供了 LIKELY 和 UNLIKELY 宏,提示编译器在分支预测时选择分支。其实现很简单
  69. 编程 » C++, folly
    高效程序总是尽量避免频繁触碰在堆上分配和释放内存,所以无论是std::string还是folly:fbstring都做了SSO( small string optimization )。而folly::FixedString是一个很有意思的实现,它可以把任意长度的字符串都放在堆上。代码可见https://github.com/facebook/folly/blob/master/folly/FixedString.h
  70. 由 Facebook 开发和维护的 C++库 Folly 提供了锁folly::MicroLock,代码文件地址:https://github.com/facebook/folly/blob/master/folly/MicroLock.h
  71. 编程 » C++, C++标准库
    std::tuple的原理并不复杂,但有些细节非常有意思。其中有一个是至少在gnu C++ std的实现中,std::tuple是倒序存储的:
  72. 编程 » C++, 智能指针
    理论上而言,当 C++提供了std::unique_ptr, C++的程序就不应该出现普通指针了。所有普通指针都可以用std::unique_ptr代替,避免手动删除对象。
  73. 编程 » C++, folly
    folly::fbstring是一个完全兼容std::string的类,可以做到无缝替换,而且性能更高。其代码参见https://github.com/facebook/folly/blob/master/folly/FBString.h
  74. 编程 » C++, 数据容器, folly
    folly::dynamic提供类似于C++的动态类型。和std::any可以容纳任意类型不一样,folly::dynamic只支持保存以下几种类型:
  75. 编程 » C++, 数据容器
    我们知道在javascript以及Python 3.6+中,所有的dict都保留了插入顺序。但在 C++中,无论是std::map还是std::unordered_map,都没有保留插入顺序。当遍历时,std::map得到的是一个根据键值排序的有序序列,而std::unordered_map则基本是乱序。
  76. 编程 » C++, 数据容器
    我们知道在javascript以及Python 3.6+中,所有的dict都保留了插入顺序。但在 C++中,无论是std::map还是std::unordered_map,都没有保留插入顺序。当遍历时,std::map得到的是一个根据键值排序的有序序列,而std::unordered_map则基本是乱序。
  77. 编程 » folly, C++, 数据容器
    由 Facebook 开发和维护的 C++库 Folly 提供folly::sorted_vector_setfolly::sorted_vector_map,是std::mapstd::set在小数据集上的优化版。代码见: https://github.com/facebook/folly/blob/master/folly/sorted_vector_types.h
  78. 编程 » folly, C++
    Folly 官方地址:https://github.com/facebook/folly
  79. 获取程序占用的内存量,是一个诡异的需求。但程序写多了,有时候还真需要,尤其是代码运行出现问题的时候。
  80. 编程 » Linux, rsync
    在同步一个超大文件时,发现 rsync 并没有按照预期的同步一个文件。而使用md5sum检验文件内容时,原始文件和目标文件的内容并不一样。
  81. http://senlinzhan.github.io/2017/12/04/cpp-memory-order/ 写得最浅显易懂。记录一下以备查询。
  82. 出现的一个场景是将函数指针用 void
  83. armadillo是一个线性代数 C++库,封装了blaslapack,提供更直观的接口。
  84. 编程 » Linux, Vim, 字符编码
    由于 UNICODE 的优势,目前推荐都用 UTF-8 进行编码。
  85. 编程 » GIT
    有时候不小心把一些大文件 commit 到了本地版本库,但往网络版本库同步时,因为文件过大被拒绝。如果在上传前,本地有多次提交,此时再在当前版本里删除这些大文件还不够,还需要把历史记录全删掉。效果要跟从来没提交过这些文件一样。
  86. 编程 » GIT
    git经常出现类似于HEAD detached at origin/development的错误提示。这是因为当前的 HEAD 没有位于任何一个分支上的缘故。
  87. 一定要先座这一几步,否则直接用pypyodbc会爆下面错误:
  88. boost是除std外最常用的 C++库,覆盖很多常用操作。目前最新的版本是1.85.0http://boost.org/上可以查看最新版本号,将下面的 59 换成最新的即可)。
  89. 编程 » C++, 算法, 代码片段
    一个短小、高效的 C++函数,用来判断指定日期是星期几:
  90. 编程 » C++, C++11
    花括号初始化是C++11引入的一种初始化方法。
  91. 编程 » C++, GCC, 编译链接
    LD 在链接生成目标文件时,会从左到有扫描输入的依赖库,当依赖库之间也有依赖关系时,必须将「依赖别人的库」放在「被别人依赖的库」的前面。否则会链接失败!失败的症状有:
  92. 最近老遇到一个奇怪的问题。在 VS 2013 编译时,爆出很多警告:
  93. 编程 » C++, 编译错误
    在 gcc 中,存在继承关系的模版类,子类无法直接访问父类的成员,即使该成员是protectedpublic
  94. 编程 » C++
    C++的浮点数转整数有四种方法,直接类型转换、round、floor、ceil。其效果如下表:
  95. C++内存检查和性能分析工具 valgrind里介绍了 valgrind 的安装,以及用于效率分析 profiler 工具。valgrind 最本来的功能是内存检查。这篇文章做简单的介绍。
  96. 一个好用的 C++性能分析工具需满足几个条件:
  97. Python 数据分析工具 pandas 中以 DataFrame 和 Series 作为主要的数据结构。
  98. 由于 instantclick 不会重新运行位于 head 部分的 JavaScript 代码,而很多工具性软件,比如 MathJax、百度统计、Google Analytics、Google Code Prettify 等软件都是直接将 JS 文件插入到 head 区域。这导致这些工具在 instantclick 点击后失效,需要重新配置。
  99. 以前总是被教育说注释写得越详细越好,我自己写代码的时候也恨不得将每一步都用自然语言给它翻译一遍,如果没写注释就觉得不专业。后来看到健硕写的 notes ,再加上最近做一个东西,也有一些感受。
  100. 编程 » SQL
    现在 Access 用的人应该不多了,本来我以为我也不可能用这玩意儿,但最近在用 VBA 通过 SQL 处理数据时,发现它的语法是 Access 的语法。平时对 SQL Server 语法相对熟悉一些。下文总结了 Access 和 SQL Server 语法的差异。
  101. 编程 » Matlab, 并行计算
    我们知道 Matlab 不支持多重 parfor 循环。下面代码会出错:
  102. 编程 » Matlab
    在写 Matlab 程序时,函数的命名方式让人头疼,很难保证刚写的一个函数名在很久以前被用过,成为隐藏的一颗炸弹。
  103. 编程 » Matlab, 并行计算
    parfor适用于
  104. 编程 » Matlab
    Matlab 在启动时会自动运行脚本startup.m。在这个脚本里可以自动修改当前目录,修改显示方式等等。比如
  105. 编程 » Excel, lotus, VBA
    公司使用 Lotus ,我每天都通过 Excel 编写 VBA 代码自动调用 Lotus 发送邮件,发现一个奇怪的现象。一般我们通过下面的 VBA 代码指定邮件收件人:
  106. 编程 » Matlab
    第一步,which函数可用来获取 Matlab 函数的全路径(包含路径和文件名)。
  107. 更新一下之前写的Excel 的数据库类,将其改成函数的形式,调用更简单(省却了生成类实例的步骤)。现在这个代码在工作中用了一年多,已经比较健壮。若有问题,请留言指出或与我联系。
  108. 编程 » Excel, 数据库
    在前面的文章里,我已经提到Excel 数据本身可以当做一张 SQL 查询的数据表,并在 Excel 内进行数据库运算操作。数据库查询函数可以用我之前写的Excel 数据库操作函数类。我们可以用以下方式
  109. 之前对普通 Excel 文件,我都保存为默认的 xlsx 格式,带 vba 的保存为 xlsm 格式。最近从同事那里见到一个高大上的 excel 文件格式: xlsb。我学习了一下,觉得甚为强大,在此推荐一下。
  110. 编程 » Excel
    在编辑 Excel 文件时经常遇到的一个问题是,我这边用得好好地,换台机器就变了个样,或者根本用不了。下面是我在日常工作中总结的一些避免这些情况的小技巧。
  111. 编程 » PowerPoint, 输入法
    最近 PowerPoint 打字速度慢就困扰着我。打字以后出现文字很慢,基本上我在键盘上狂敲十几个字,过了几秒钟才会慢慢的出来。长一点的段落我还需要先在别的地方写好,然后复制粘贴到 PPT。
  112. 键盘流(指尽量使用键盘,少动用鼠标,尤其不要在鼠标和键盘之间来回切换)是我追求的目标。我工作中用的最多的软件是 Excel ,写代码写的最多的是 Excel/VBA。用得多了自然比较关注工作效率,所以我在 Excel 键盘流上略有心得,这里给大家分享一下。网上有很全的快捷键列表,但那不是我想写的,因为太多记不下来不实用。这里只列举一下我在实际工作中的的确确总是在用的,为自己方便,也共享给大伙们。
  113. 编程 » Matlab, 字体
    Matlab 默认字体为 Monospaced ,这是种逻辑字体,它在不同语言和操作系统上映射为不同的物理字体。一般在中文系统下, Monospaced 字体被映射到宋体。它很丑,我想换掉它。
  114. 编程 » VBA, Excel
    如果不提供错误处理方法,VBA在出错时会停留在出错之处。Excel/VBA 提供On Error关键词来处理程序运行过程中的错误,具体有下面两种用法:
  115. 编程 » Excel
    Excel 中可设置每个单元格显示数字和文本的格式:
  116. 编程 » Java, Matlab
    Matlab 2008b 才开始引入 containers.Map ,这是 Matlab 唯一的数据结构(这里的数据结构是指自带一定逻辑性的数据结构,不包括普通数据类型)。如果要有其它,比如 Queue、Set 等数据结构,只能自己编写一个。File Exchange 上有不少人做过这个工作,我也写过Queue、List、Vector 的 Matlab 对象。不过 Matlad 的面向对象编程效率极低,这种方法只能用于不太注重效率的场合。解决这个问题的另外一个方法是使用 Java 对象。
  117. 平时电视看得极少。有时候看看电影或电视剧,都是从网上下载或者看在线视频。俺家里的歌华有线电视欠费快两个月,一直没有续费,但没觉得生活中少了些什么,可见电视对我来说没什么用处。
  118. 2014-03-25 更新:我已经将该类修改成函数形式,并增加新功能,参见更新 Excel 的数据库查询函数库
  119. 以前发过一个编辑和发送 Outlook 邮件的 Excel/VBA 脚本。最近公司不让用 Outlook ,强制使用 IBM Lotus Notes ,我又写了一个编辑和发送 Lotus 邮件的 VBA 脚本。
  120. Excel 多表合并和查询是一个应用很广泛的问题。下面是一个简单的例子,我们需要从两张数据表里,得出每个行业的股票波动率平均值。第一个数据表保存了股票和行业的对应关系,有两列,第一列为股票名,第二列为每只股票对应的行业。第二张表保存了各个股票在各个交易日的收盘价和前收盘价,有四列,第一列是股票名,第二列为交易日,第三列和第四列分别为股票在这个交易日的前收盘价和收盘价。
  121. 编程 » Excel
    此篇为学习笔记。
  122. 编程 » Excel
    最近看到一个比较有趣的问题, Excel 中以下表达式代表什么含义:
  123. 编程 » Shell, VBA
    某些时候,我们需要在 Excel 中调用命令行或者 Bash 脚本, VBA 可以通过 Shell 函数很方便地做到这一点。以下用ipconfig /all来举例,这条命令行语句用来获得机器的网路配置信息,包括 IP、网关等信息。它可以替换成任何一个 bash 脚本和命令行代码。
  124. 我写了一个期权到期收益结构的 Excel 模板。欢迎大家无聊的时候使用。
  125. 编程 » Matlab, 编译器
    现在比较新的电脑基本上都是 64 位的 CPU , Matlab 也是 64 位的版本,但 64 位的 Matlab 没有自带编译器,需另行安装编译器。下面是方法之一:
  126. 编程 » Excel, VBA
    无意中发现一个 Excel VBA 对待参数的一个"不正常"现象。这种处理方式可能无意中导致程序结果错误,而且你很难发现你的错误所在:
  127. 编程 » Excel
    香港这边没有 WIND ,部门的彭博也不在我的机器上,为了取个股票价格数据都得跑来跑去。一怒之下,我写了一个 Excel 的函数,用来获取行情数据。
  128. 编程 » Excel, VBA
    Excel VBA 出错时给出的错误信息极少,需要充分利用各种工具来进行调试。
  129. 编程 » Matlab
    读者来信:
  130. 编程 » bug, Matlab
    Matlab 内置的 runstoredprocedure 函数,用来运行同时有输入和输出参数的存储过程:
  131. 编程 » Matlab, 代码准则
    我所在部门也不是 IT 部门,职位也不是开发职位,但平时工作还是需要大量处理和分析数据、计算和开发各种指标等,还是需要写很多程序,语言以 VBA 和 Matlab。但同时,部门里像着我这种写程序的人并不多,别人并不看我的代码而只关心我提交的结果(说实话,大多数时候即便我写错了也不会有人知道),工作环境也不像专业的 IT 公司或部门,有严格的流程控制和工作平台。我这里没有版本控制、没有自动测试环境、没有代码格式和注释要求,也不需要去 Linux 下干活。我相信国内金融行业有不少人与我处于同样的状态。
  132. 编程 » Matlab
    写了一个统计代码量的函数,函数已上传到 Matlab Central File Exchange下载地址,使用方法:
  133. Excel 的数据透视表是一个很好用的功能,我写了一个 Matlab 版本,在处理上和 Excel 的透视表差不多,还差一个 filter 而已。
  134. 没有人敢说 Matlab 的帮助文件不够详细和全面,但 Matlab 里面的确存在一些功能和函数,你很难找到它的帮助文档。下面列举一些,以后碰到其它的也会放到这里来:
  135. 上次说起遇到两个 Matlab 的效率问题,还剩下 save , load 没说。不过这个问题的结论挺简单的,就是在 save 的时候尽量指定使用-v6 选项。
  136. 编程 » vbs, 办公自动化
    工作中或多或少有些琐碎的事情,比如每天要发送和接受数据,很多是通过邮件的方式传递的。之前写过如何在 Outlook 里自动保存附件,这里再发一个如何更方便地发送带附件的邮件。
  137. 以下对并行计算的个人理解受到较多质疑,删除之。
  138. 最近用 Matlab 写了个东西,运行效率不如我意。用 Profiler 跟踪了一下,结果让我大吃一惊。其中三分之一的时间花费在 datestr 这个函数上,六分之一的时间花费在 save 和 load 数据上。这里先谈前一个问题,关于 save 和 load 的效率以后再谈。
  139. 基于将工作文件在家里电脑和公司电脑上的转移、Kindle 上电子书的管理的需求,我用 Matlab 写了几个函数,用来实现这些需求。
  140. 编程 » dll, Matlab, VB
    这里放两个在实际工作中遇到的问题,还没找到解决的方法,向广大网友求助。
  141. Matlab 的 database 工具箱只支持 ODBC 数据库连接,在使用之前需要先设置 ODBC 数据源。之前在 Excel 里用的是 ADODB ,使用 ADODB 的好处是无需设置 ODBC 源,似乎效率也要高一些(但我一直没弄懂 ADODB 是什么东西,所以效率这东西我也说不清)。
  142. 如果一个日期(或者时间),如果用字符串,比如"2010-10-04"的形式,各个系统都没有什么区别。在某些时候,将日期用数字表示,将大大增加对日期查找、比较的效率。而如果用数字来表示日期,在不同的系统之间差别就大了。
  143. Excel、Matlab 在与数据库交互数据时,通常需要事先配置好 ODBC 数据源,这导致一个文件换到另一台机器还需要重新配置 ODBC。手工配置太麻烦,从国外一个网站看到一种解决方案:
  144. 现在相机的像素实在是太高了,上次去泰山玩,朋友的 1200 万像素的 D90 照出来的照片分辨率高达 4288×2848 ,即使转为 jpg 格式,每张都在 5M 以上。而现在电脑屏幕的分辨率最高也在 1920 以下吧,超高分辨率的照片除了打印大照片之外没什么用处,反而不方便传输、流通、保存。
  145. 最近做一些优化问题,找到了 YALMIP 工具包。在其帮助文件里看到如何使用该工具包求解 sudoku,整个思路是将问题转化为整数规划问题。这样的思路以前也想到过,但总觉得整数规划问题的求解会更复杂。但是下面的 Matlab 代码,显示它可以非常简洁,思路见程序的注释(程序运行需要安装 YALMIP 工具包):
  146. 上次大规模使用 Matlab 还是本科的时候,当时还是 5.3 版,现在重新尝试它,已经是 7.8 ( R2009a ),而且 R2010b 版都已经发售。而这些版本引入的一个新玩意儿便是面向对象化编程( object-oriented programming , OOP )。
  147. 编程 » Matlab, 优化
    最近做了些东西,用到了 Matlab 的优化工具箱, optimization toolbox。因为以前没用过这东西,今天把这个工具箱的帮助文档基本上翻了一遍。
  148. 本文结论:不要过度担心 Matlab 的传值调用的效率问题。
  149. Excel 有一个很有用的功能是直接导入外部数据库或者使用外部数据源建立数据透视表和数据透视图。但比较可惜的是,这个数据源的查询语句是静态的,它无法根据日期自动修改(比如在应用中,我们希望每天获取的外部数据都是当天最新的数据),下面两个函数是修改外部数据源的 VBA 代码,调用它们就可以建立动态的数据源。
  150. 编程 » Excel, VBA
    最近学到一招,效果不错~
  151. 在工作中定期或不定期会收到一些数据文件,然后要将它们的附件保存到自己的电脑上,下面演示如何让 Outlook 自动做这件事情。
  152. 编程 » Excel, VBA
    效果图:
  153. 编程 » Excel, VBA
    某些时候需要打开 Excel 文件来获取或者写入数据,但又不希望跳出打开的 Excel 文件窗口,可以用下面的代码:
  154. 时间管理中有重要的一条,保持你的收件箱整洁、干净。Gmail 一个重要的创新就是 Archive (存档),选中邮件后点下「archive」按钮或者按一下快捷键 y ,邮件就被移出收件箱,但又跟删除邮件不一样,这些邮件还可以继续被搜索。这里讲最近写的如何在 Outlook 里实现这个功能。
  155. 编程 » Excel, VBA
    VBA 的 Date 类型比较奇怪。
  156. 编程 » Oracle, VBA, 数据库
    最近写一个 vba 程序的时候不间歇的出现 「存取器不是参数存取器 」或者「列值被截断」的错误。后来发现对于我等不专业人士,遇到这样的错误还挺 e 的。下面是综合各种资料了解到的一些东西。
  157. 最近写了一些 Matlab 程序,想起以前想过的一个东西,记录一下。
  158. 编程 » Matlab, swap, 函数包
    Matlab 程序效率低下,其中一个原因就是它的参数无法引用,每次都是传值。这不但导致效率问题,要实现某些功能,也需要一些特殊的手段。比如最简单的,如果交换两个变量的值,也就是在 C/C++里的函数 void swap(int& a, int& b),在 C/C++里实现很容易,但在 Matlab 里,你会吗?
  159. 编程 » 算法, 算法分析
    下面这个求$ 1/\sqrt{x}$ 的函数号称比直接调用 sqrt 库函数快 4 倍,来自游戏 Quake III 的源代码。
  160. 编程 » IQ, 测试, 脑年龄
    从+0 那看来的。主要测试快速记忆能力。
  161. 编程 » Baidu, Google, IT评论
    Google 更懂中文我拿不出什么确切的证据(虽然我已经这样认为),但下面的数据是否能说明 Google 确实更懂阅微堂呢?
  162. 最近做社会实践项目遇到的一个问题,需要动态修改一个表格。本来以为要想修改一行,直接设置新的 tr.innerHTML 即可。后来发现在 Firefox 下可行,但在 IE 下通不过,查看了一下帮助,才发现 innerHTML 还没有一个通用标准,而在 IE 下innerHTML对于标签为 COL, COLGROUP, FRAMESET, HTML, STYLE, TABLE, TBODY, TFOOT, THEAD, TITLE, TR 的元素是只读的。要想在 IE 下动态修改表格,只能使用 insertRow 和 insertCell;