首页

  • 2014
  • How to detect whether socket is still connected...

    From wget source code… bool test_socket_open (int sock) { fd_set check_set; struct timeval to; int ret = 0; » read more...

  • Hex Dump In Many Programming Languages

    Hex Dump In Many Programming Languages See also: ArraySumInManyProgrammingLanguages, CounterInManyProgrammingLanguages, DotProductInManyProgrammingLanguages, WardNumberInManyProgrammingLanguages, NinetyNineBottlesOfBeerOnTheWall, ProgrammingChrestomathy   Please use spaces rather than tabs in any code samples below (ConvertSpacesToTabsNotForCode).   A new ProgrammingChrestomathy challenge: hexdump a file, given a starting and ending offset in the file, and number of by... » read more...

  • HOWTO Increase write speed by aligning FAT32(通过对齐 FAT32 提高U盘访问速度, 转载)

    I like many who visit this sub-forum, do so because they, or a program they used, formatted their USB stick at some point - afterwards noticing a substantial decrease in write performance on the drive. You can fix this by aligning the FAT32 file system to the 128K "blocks" or "cells" that flash memory uses. After much trial and error, and not being an expert in file systems, I was able to read up on the subject and figure out how to align my file system on the drive. The tools you need to per... » read more...

  • Gtk2 and Gtk3 for non-Gnome users

    I’m over gnome. Even when I was a gnome user I did minimal gnome installs. However, I like many still use many gtk applications. Most of the applications I use are gtk applications. However, I don’t use a DE, I either use xfce4.8 or compiz as a standalone wm. However, I still want my desktop to look nice. Now with some of the gtk applications I use adopting gtk3, such as Nautilus and Gedit, I want my gtk2 and gtk3 apps to use the sameicon and gtk theme. The fir... » read more...

  • Git 分支管理与本地 repository 创建

    项目开发中有个困境:代码库通过 perforce 管理,所有代码必须通过 code review 后才能上传,但有时候一个 feature 的 code 还没开始上传(等待 review 中)就需要为下一个 feature 开始编码,而且很有可能两个 Feature 中会修改同样的文件,这种情况下, 用 git 来管理自己本地代码是个不错的选择。 下面的介绍中,第一部分来自于 opengit.org , 介绍了 git 的分支管理,后一部分简要介绍了如何在本地通过 git 建立简单的 repository 。 建立完 repo 之后就可以按照第一部分介绍的分支管理来管理分支了。 Table of Contents 1 Git 分支 (from opengit.org) 2 简单的 Git repository 建立 1 Git 分支 (from opengit.org)   几乎每一种版本控制系统都以某种形式支持分支。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。在很多版本控制系统中,这是个昂贵的过程,常常需要创建一... » read more...

  • Gentoo emerge 失效

    Gentoo: Emerge errors after a Python upgrade? If you encounter seemingly “strange” Python errors when emerging apps after a Python upgrade, execute: # python-updater -v This will rebuild packages that are broken due to the Python upgrade (Note: You can also manually emerge the packages python-updater lists) » read more...

  • GIT 备忘

    GitMemo Author: Tubo 近来一直在用 git 来管理代码,使用过程中会时不时地遇到一些问题或者有些想法,然后就去查该怎么做。 这里将查到的一些东西做个记录,以便查阅。 这不是一个 git 的 FAQ, 但如果有兴趣或者有需要,可以来 这里 查阅 GitFaq。 此外,如果没有接触过 Git, 推荐阅读一下 OpenGit 上的 progit 。 Table of Contents 1 分支管理 1.1 怎样在本地创建一个分支? 1.2 怎样创建一个远端的分支? 1.3 怎样删除本地分支? 1.4 怎样删除远端分支? 2 Diff 相关 2.1 如何查看某次提交更改了哪些文件? 2.2 如何打补丁 3 Miscs 3.1 如何找到 GIT repository 的根目录? 3.2 GIT Submodule 是什么,怎么用? 1 分支管理   1.1 怎样在本地创建一个分支? 很简单: git branch BranchName 但上述命令仅仅创建一个 branch,并不会自动切换到新的分支,... » read more...

  • Fix Valgrind must-be-redirected error in Gentoo

    Last week, I tried to use Valgrind to identify potential memory related bugs, since segmentation faults occured randomly in a Python C library. However, Valgrind failed to start and displayed the following error message: valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected fun... » read more...

  • Error -- RPC failed; result=22, HTTP code = 411

    Error: RPC failed; result=22, HTTP code = 411 If you attempt to push a large set of changes to a Git repository with HTTP or HTTPS, you may get an error message such as error: RPC failed; result=22, HTTP code = 411. This is caused by a Git configuration default which limits certain HTTP operations to 1 megabyte. To override this limitation, update the postBuffer setting on your cloned repo. try:  1. Up... » read more...

  • Emacs 通过 CEDET 实现 Tag 跳转 (C/C++/Python)

    1 Preface 前面曾经介绍过 GNU Global , 也提到了它没有直接支持 python 解析, 想要用它来生成 python 文件的 tags 的话,需要自己编写相应的插件。 此外, GNU Global 对 C++ 的支持程度和 C 相同, 如果两个类从包含了同名的成员函数, 在查找这个成员函数的定义时, global 不会准确的跳到相应的函数上, 还需要我们手动去选择相应的 tag 。 CEDET 是 Emacs 中的一个强大的插件,它提供了基于语义的 Tag 跳转, 该功能对 C/C++, Python, Java 等的支持都非常准确, 并且通过 mru-bookmark-mode 中的 semantic-mrub-switch-tags 提供了在多个 Tag 中来回跳转的功能。 但是, 这个跳转需要用户去指定待跳回的 Tag, 且由于默认跳转到最近一次访问的 tag , 常常会弄的很乱。 2 Solution  新建一个栈,每次通过 semantic-ia-fast-jump 或者 semantic-ia-compl... » read more...

  • Emacs 自动补全头文件

    Table of Contents 1 目标 2 方案 3 使用和效果 1 目标 1: 写 C/C++ 代码时候,可以根据自动补全头文件。 注意,是补全,也就是说至少我们需要输入几个字符让它帮忙补全。 2: 如果头文件存放在搜索路径的子目录中,可以自动列出子目录中的文件, 并将这些文件添加到用于补齐的候选名单中。 3: 补齐完成之后,可以自动判断到底应该使用 #include <FILE> 还是 #include "FILE" 。 2 方案 emacser.org 上有一篇文章,其中提到了这个解决方法, 主要是利用了 abbrev-mode 和 skeleton-mode 来实现, 通过这个方法,我们输入inc, 然后按空格, 会提示输入文件名称。 代码如下: ;; 安装 abbrev (mapc (lambda (mode) (define-abbrev-table mode '( ("inc" "" skeleton-include 1) ... » read more...

  • Emacs 启动优化二三事

    » read more...

  • Effective STL 阅读笔记: Item 4 ~ 5: Call empty instead of checking size() against zero.

      Table of Contents 1 Item 4: Call empty instead of checking size() against zero 2 Item 5: Prefer range member functions to their single-element counterparts 1 Item 4: Call empty instead of checking size() against zero 简而言之,用 container.size() 来检查 container 是否为空,而不要用 /container.size() == 0/。 原因: empty is a constant-time operation for all standard containers, but for some list implementations, size takes linear time. 2 Item 5: Prefer range member functions to their single-elem... » read more...

  • Effective STL 阅读笔记: Item 3: Make copying cheap and correct for objects in containers

      容器 (Containers) 用来存储对象 (Objects), 但是被存储的对象却并非原原本本是你给他的那一个, 而是你指定对象的一个拷贝。而后续对该容器内存储对象的操作,大多也是基于拷贝的。 拷贝操作通过类的成员函数 copy constructor 或者 copy assignment constructor 来完成( 如果用户 没有自己声明这两个函数,编译器会自动生成他们): class Widget { public: Widget(const Widget&); // copy constructor Widget& operator=(const Widget&); // copy assignment operator // Other functions. }; » read more...

  • Effective STL 笔记 Item 6--Be alert for C++'s most vexing parse

      假设有个文件里面记录的一系列的 int 值,现在我们想把这些数值存到一个 List 里面,结合 Item 5, 我们可能会写出下面的代码: ifstream dataFile("ints.data"); list<int> data(istream_iterator<int>(dataFile), // Start of iterator istream_iterator()); // End of iterator 这段代码可以编译,但运行时并不工作,它不会去调用 list 的构造函数,从而不会生成我们想要的这个 List。 问题,出在 C++ 对代码的解析上。 假设我们需要声明一个函数,该函数接受 double 类型参数并返回 int 类型,C++ 里面,下面三种方法是等效的: 1: int f(double d); // Old C style. 2: int f(double(d)); // Function style casts. 3: int f(doubl... » read more...

  • Effective STL 笔记 -- Item 9 Choose carefully among erasing options

    假设有一个容器中存放着 int ,Container<int> c, 现在想从其中删除数值 1963,可以有如下方法: 1: c.erase(remove(c.begin(), c.end(), 1963), c.end()); // c is continguous memory container 2: c.remove(1963); // c is list 3: c.erase(1963) // c is standard associative container 对于 continguous memory container 来说, std::remove() 可以保证返回的 iterator 之前的内存中不包含被删除的值,配合 erase 来用,形成所谓的 erase-remove idiom 。而对于 List 来说,应该调用 list 本身的 remove() 方法。对于 map,set 等等,则必须使用 erase() 方法,而不能使用 remove() ,对 associative container 使用 remove() 可能会... » read more...

  • Effective STL 笔记 -- Item 6 ~ 7- Container and Object Pointer

    中间两次笔记被删掉了,简单补一下: Item 3 中提到如果将对象直接放入容器中,可能会引发问题: 大量的拷贝行为要求对象的拷贝构造代价要小 试图将派生类放入存放基类的容器中会引发 Slicing 问题。 对此的简单方法就是在容器中保存对象 指针 ,但如果直接保存指针的话,我们需要自己维护和管理内存,容易混乱。最好的方法是保存 智能指针(smart pointer shared_ptr)) 。 需要注意的是,这里提倡的是 shared_ptr,不是 autoptr,C++ 标准要求不能声明存放 autoptr 的容器 (Container of AutoPtr, COAP)。原因在于,根据定义,AutoPtr 的 Copy 要求将对象的所有权 (ownership) 转给新的 AutoPtr: 1: auto_ptr<int> p1(new int(1)); 2: auto_ptr<int> p2(p1); 3: p1 = p2; 上面的示例中,第一行新建了一个 AutoPtr 对象 p1 用于包装一个 int 指针,第一行执行后,p2 接手了... » read more...

  • Effective STL 学习笔记:19 ~ 20

    » read more...

  • Effective STL 学习笔记: 多用 vector & string

    如果可能的话, 尽量避免自己去写动态分配的数组,转而使用 vector 和 string 。 原书作者唯一想到的一个不用 string 的可能的理由,就是 string 所使用的引用计数 (reference counting) 在多线程下可能会因为并发控制反而导致性能下降。我们可以通过查看文档或者 STL 源面的方法来看 String 是否引入了引用计数,如果 string 在多线程下真的因为引用计数而导致了性能下降,我们可以通过下面的方法来避免: 看是否可以通过某些方法来禁用引用计数,例如条件编译 该方法可移植性不佳,但最简单。 看是否有 string 的非引用计数替代品。 用 vector<char> 来替代 string 虽然这样可能会导致很多 string 专属的成员函数不能用,但大多的函数都可以通过 STL 算法来替代。 » read more...

  • Effective STL 学习笔记: Thread Safety and STL Container

    1 STL, Thread and SGI C++98 以及之前的 C++ 标准中,并未对线程做出过规定,但对于 STL 来讲,SGI 做出了自己的规定,很多其他的 STL 实现也遵循这些规定: The SGI implementation of STL is thread-safe only in the sense that simultaneous accesses to distinct containers are safe, and simultaneous read accesses to to shared containers are safe. If multiple threads access a single container, and at least one thread may potentially write, then the user is responsible for ensuring mutual exclusion between the threads during the container accesses. This... » read more...

<前页 1 2 3 4 5 6 7 8 9 (共180篇)