http://www.badongo.com/pic/5951085?size=original
禮:規規矩矩的態度。(規矩)
義:正正當當的行為。(行正)
廉:清清白白的辨別。(明辨)
恥:切切實實的覺悟。(振作)
竊以為,最易者禮,次則義,再而廉,難者恥。
。奈無真書直能不
恥 廉 義 禮
http://www.badongo.com/pic/5951085?size=original
禮:規規矩矩的態度。(規矩)
義:正正當當的行為。(行正)
廉:清清白白的辨別。(明辨)
恥:切切實實的覺悟。(振作)
竊以為,最易者禮,次則義,再而廉,難者恥。
。奈無真書直能不
library-prebuilt-for-windows 誠徵路人一起編譯?
這是一個想要幫助大家輕鬆的站在巨人的肩膀的想法。
I want to help everybody to easy use c++ libraries. 目前將所有編好的程式庫都放在google code上,
Now the compiled libraries are all put on google code. 網址: http://code.google.com/p/library-prebuilt-for-windows/
有人要寫 nuget 或 visual studio 自動下載外掛嗎?
Is there anyone want to help me put this on nuget or visual studio plugin?
相信大家在使用zlib, libpng, fftw ... ... 等程式庫時,都會遇到麻煩的編譯與連結問題,
I think everybody use library like zlib, libpng, fftw...
Always have encounted some compile and linker trouble. 在上上個禮拜,我發現 boost 的 auto_link.hpp 這個神奇的標頭檔竟然會自動幫我連結正確的版本!
Two weeks ago, I found the auto_link.hpp from boost library.
This magic header helped me link correct version of library automatically!!! 耶耶耶耶耶耶耶耶耶耶~~~~~~~~~~~~~
YYYYYYYYYYYYYYYYYYYYAAAAAAAAAAAAAAAAAAA 真是 真是 嚇死我了!!! This is really suprising for me.
所以呢,我心中就有一個想法,把目前看得到的開源 程式庫都先編譯好,並把自動連結規則寫好放在 auto_link_libraryNAME.hpp 裡面
So, I have an idea, which is to build all open source library that I know.
And write the auto link rule in the auto_link_libraryNAME.hpp
舉個例來說: 要用 zlib 的人只需要 For example, if you want to use zlib you just need to
#include <auto_link_zlib.hpp> 在連結器的相依性都不用輸入半個字,就會連起來了! 這真是太神奇了!傑克!
You don't have to edit any property in VCProject =>linker=>input=>dependencies. 當然這些"糖果"對很多高手來說也是方便多多呀! 為什麼呢?因為有很多程式庫在 VS2008, msvc-10.0 都不是很好編譯呀~
Of course, these "sugar" are also very convenient for pro.
Why? Because many libraries in VS2008, msvc-10.0 are not convenient to compile and link! 目前計畫支援 Now support 兩種組合 msvc-9.0, msvc-10.0 乘四種 MTd MT MDd MD 乘兩種(有些程式庫只有靜態) 動態 靜態
Dynamic Static 乘兩種 x86 x64 共 32 種組合,簡單來說100kb的code編完就200mb
Total 32 set, a 100kb code can output 200mb. 如果有任何的高手想要幫忙的話,就
If anyone who know Visual C++ library want to help me 意者寄信吧~ 我在精神上會感激你的XD
This is my email, I will thank you for everything you do! 信箱: http://scr.im/damody 簡單講解一下命名規則
基本上與boost一樣,不同點在於不支援單執行緒。 檔名沒有對vc9 或 vc10 做劃分, 原因在於大部份 c-style 的程式庫是沒有差別的, 只有在 C++-style 才有差,且可以共用auto link標頭檔
NameRule: //static MDd x86 : libzlib-gd-x86.lib //static MD x86 : libzlib-x86.lib //static MTd x86 : libzlib-sgd-x86.lib //static MT x86 : libzlib-s-x86.lib //dynamic MDd x86 : zlib-gd-x86.lib //dynamic MD x86 : zlib-x86.lib //dynamic MTd x86 : zlib-sgd-x86.lib //dynamic MT x86 : zlib-s-x86.lib 基本上就是這樣了,有需要的人就盡量載吧XD
Basically it's all, take it if you need. 對程式庫有問題請聯絡 http://scr.im/damody
And if you have problems with these libraries-prebuilt,
please contact http://scr.im/damody
library list:
交換連結!會出現這個連結錯誤
錯誤 1 error LNK2005: "public: __thiscall std::allocator<unsigned short>::allocator<unsigned short>(void)" (??0?$allocator@G@std@@QAE@XZ) 已在 libosg-gd-x86.lib(State.obj) 中定義過了 msvcprtd.lib
解法:
https://svn.boost.org/trac/boost/attachment/ticket/1871/regex.patch
在會出現這個問題的地方加入這個宣告
template<> _CRTIMP2 std::allocator<unsigned short>::allocator(void);
獻給同是用C++做數值分析的研究生們!^^ 科科?
程式庫載點:http://ppt.cc/ENG9
程式載點:http://ppt.cc/ZVT-
從下面的結果可以看到一般 double 所不能做的運算,mpfr都能輕易做到。
計算
I(n) = 0積到1 {(x^n)/(x+10)} dx, n=0~30
積法一:
I(0) = ln(11/10)
I(n) = 1/n-10 * I(n-1)
normal c
x 0= 0.09531017980432493500000000000000
x 1= 0.04689820195675065100000000000000
x 2= 0.03101798043249348600000000000000
x 3= 0.02315352900839845500000000000000
x 4= 0.01846470991601545400000000000000
x 5= 0.01535290083984547400000000000000
x 6= 0.01313765826821192100000000000000
x 7= 0.01148056017502363500000000000000
x 8= 0.01019439824976364800000000000000
x 9= 0.009167128613474628800000000000000
x10= 0.008328713865253717400000000000000
x11= 0.007621952256553737900000000000000
x12= 0.0071138107677959500000000000000
x13= 0.005784969245117427300000000000000
x14= 0.01357887897739715200000000000000
x15= -0.06912212310730485300000000000000
x16= 0.7537212310730485600000000000000
x17= -7.478388781318720600000000000000
x18= 74.83944336874276400000000000000
x19= -748.3418021084802400000000000000
x20= 7483.468021084802800000000000000
x21= -74834.63259180041500000000000000
x22= 748346.3713725495600000000000000
x23= -7483463.670247235300000000000000
x24= 74834636.74413903100000000000000
x25= -748346367.4013903100000000000000
x26= 7483463674.052364300000000000000
x27= -74834636740.48661800000000000000
x28= 748346367404.9019800000000000000
x29= -7483463674048.985400000000000000
x30= 74834636740489.89100000000000000
mpfr
x 0= 0.095310179804324860043952123280765092220605365308644
x 1= 0.046898201956751399560478767192349077793946346913558
x 2= 0.03101798043248600439521232807650922206053653086442
x 3= 0.023153529008473289381210052568241112727968024689134
x 4= 0.018464709915267106187899474317588872720319753108659
x 5= 0.015352900847328938121005256824111272796802468913415
x 6= 0.013137658193377285456614098425553938698641977532519
x 7= 0.011480560923370002576716158601603470156437367531957
x 8= 0.010194390766299974232838413983965298435626324680429
x 9= 0.0091672034481113687827269712714581267548478643068237
x10= 0.0083279655188863121727302872854187324515213569317632
x11= 0.0076294357202277873636062180549035845756955215914593
x12= 0.0070389761310554596972711527842974875763781174187403
x13= 0.0065333156125223261042115490801020473131419027356735
x14= 0.0060954153033481675293130806275509554400095440718364
x15= 0.0057125136331849913735358603911571122665712259483028
x16= 0.0053748636681500862646413960884288773342877405169724
x17= 0.0050748927302638432359389802921818148924167124773344
x18= 0.0048066282529171231961657526337374066313884307822119
x19= 0.0045652964181971890909740526099943547387472711252497
x20= 0.0043470358180281090902594739000564526125272887475027
x21= 0.004148689438766528145024308618483092922346160144021
x22= 0.0039676510668801730952114592697145253219929440143356
x23= 0.0038017502007634864391897551289417033018096902914264
x24= 0.0036491646590318022747691153772496336485697637524026
x25= 0.0035083534096819772523088462275036635143023624759742
x26= 0.0033780043647186890153730761865018263954379137017964
x27= 0.0032569933898501468833062751720187730826579000190726
x28= 0.0031443518157842454526515339940979834591352855235601
x29= 0.00303924046284720064589845316246844127071611028164
x30= 0.0029409287048613268743488017086489206261722305169328
積法二.
I(30)=0
I(n-1) = 1/(10*n) - 1/10*I(n)
normal c
x30= 0.000000
x29= 0.003333333333333333500000000000000
x28= 0.003114942528735632400000000000000
x27= 0.003259934318555008700000000000000
x26= 0.003377710271848203200000000000000
x25= 0.003508382818969026300000000000000
x24= 0.003649161718103097500000000000000
x23= 0.003801750494856356900000000000000
x22= 0.003967651037470885800000000000000
x21= 0.004148689441707457600000000000000
x20= 0.004347035817734016700000000000000
x19= 0.004565296418226598300000000000000
x18= 0.004806628252914182100000000000000
x17= 0.005074892730264137500000000000000
x16= 0.005374863668150056700000000000000
x15= 0.005712513633184994700000000000000
x14= 0.006095415303348167600000000000000
x13= 0.006533315612522326700000000000000
x12= 0.007038976131055460500000000000000
x11= 0.007629435720227787500000000000000
x10= 0.008327965518886313800000000000000
x 9= 0.009167203448111369700000000000000
x 8= 0.01019439076629997400000000000000
x 7= 0.01148056092337000300000000000000
x 6= 0.01313765819337728600000000000000
x 5= 0.01535290084732893700000000000000
x 4= 0.01846470991526710800000000000000
x 3= 0.02315352900847329100000000000000
x 2= 0.03101798043248600200000000000000
x 1= 0.04689820195675140100000000000000
x 0= 0.09531017980432486500000000000000
mpfr
x30= 0
x29= 0.0033333333333333333333333333333333333333333333333333
x28= 0.0031149425287356321839080459770114942528735632183908
x27= 0.0032599343185550082101806239737274220032840722495895
x26= 0.0033777102718482028826856413063309615033752964787448
x25= 0.0035083828189690258655775897155207500035086241982794
x24= 0.0036491617181030974134422410284479249996491375801721
x23= 0.0038017504948563569253224425638218741667017529086495
x22= 0.0039676510374708860465981905262265082355037377526133
x21= 0.0041486894417074568498856354928318946309950807701932
x20= 0.0043470358177340162197733412126215724416623966848854
x19= 0.0045652964182265983780226658787378427558337603315115
x18= 0.0048066282529141822674608913068630578296797818615857
x17= 0.005074892730264137328809466424869249772587577369397
x16= 0.0053748636681500568553543474751601338462706540277662
x15= 0.0057125136331849943144645652524839866153729345972234
x14= 0.0060954153033481672352202101414182680051293732069443
x13= 0.0065333156125223261336208361287153160566299198221627
x12= 0.0070389761310554596943302240794361607020293157100914
x11= 0.0076294357202277873639003109253897172631304017623242
x10= 0.0083279655188863121727008779983701191827778689146767
x 9= 0.0091672034481113687827299122001629880817222131085323
x 8= 0.010194390766299974232838119891094812302938889800258
x 7= 0.011480560923370002576716188010890518769706111019974
x 6= 0.013137658193377285456614095484625233837315103183717
x 5= 0.015352900847328938121005257118204143282935156348295
x 4= 0.018464709915267106187899474288179585671706484365171
x 3= 0.023153529008473289381210052571182041432829351563483
x 2= 0.031017980432486004395212328076215129190050398176985
x 1= 0.046898201956751399560478767192378487080994960182301
x 0= 0.09531017980432486004395212328076215129190050398177
http://codepad.org/Glbn3yeN
#include <auto_link_mpir.hpp>
#include <auto_link_mpfr.hpp>
#include <iostream>
#include "mpreal.h"
void exp4_mpfr()
{
using namespace mpfr;
using namespace std;
mpreal x = "0";
mpreal n = "30";
printf("x%2d=\t", 30);
cout<<x<<endl;
for (int i=30;i>0;i--)
{
x = mpreal("1")/"10"/n-x/"10";
n -= "1";
printf("x%2d=\t", i-1);
cout << x << endl;
}
}
void exp4_normal_c()
{
int n;
double x;
x = 0;
printf("x30=\t%f\n",x);
for(n=30; n>0; n--)
{
x = 1.0/10.0/n - x/10.0;
printf("x%2d=\t", n-1);
std::cout << x << std::endl;
}
}
void exp3_mpfr()
{
using namespace mpfr;
using namespace std;
mpreal x = "11";
mpreal n = "10";
x = log(x/n);
printf("x%2d=\t", 0);
cout<<x<<endl;
n = "1";
for (int i=1;i<31;i++)
{
x = "1"/n-"10"*x;
n += "1";
printf("x%2d=\t", i);
cout << x << endl;
}
}
void exp3_normal_c()
{
int n;
double x;
x = log(11.0/10.0);
printf("x%2d=\t", 0);
std::cout << x << std::endl;
for(n=1; n<31; n++)
{
x = 1.0/n - 10*x;
printf("x%2d=\t", n);
std::cout << x << std::endl;
}
}
int main(int argc, char* argv[])
{
mpfr::mpreal::set_default_prec(1024);
std::cout.precision(50);
std::cout << "normal c" << std::endl;
exp3_normal_c();
std::cout << "mpfr" << std::endl;
exp3_mpfr();
std::cout << "normal c" << std::endl;
exp4_normal_c();
std::cout << "mpfr" << std::endl;
exp4_mpfr();
return 0;
}
選取一個資料夾內的 .c 檔
在c/c++屬性中, 輸出檔>物件檔案名稱後面接上資料夾名字
ex. $(IntDir)\ => $(IntDir)\mpn\
這是預設的路徑
vsyasm -Xvc -f Win32 -I "..\..\mpn\x86w\" -o "Win32\Debug\mpn\copyd.obj" -g cv8 -rnasm -pnasm copyd.asm
這是正確的路徑
vsyasm -Xvc -f Win32 -I "..\..\mpn\x86w\\" -o "Win32\Debug\mpn\copyd.obj" -g cv8 -rnasm -pnasm copyd.asm
在-I 那邊少一個 \ 會導致一個情況 vsyasm: No input files specified
什麼叫致命連結錯誤: 'P1' 的版本 '20081201' 和 'P2' 的版本 '20080116' 之間 IL 不相符
明明就是 vc9 連結到 vc10 lib 檔
glDisable(GL_POLYGON_SMOOTH);
感謝姚老師解答。
DXUT.H 中有定義V
#if defined(DEBUG) || defined(_DEBUG)
#ifndef V
#define V(x) { hr = (x); if( FAILED(hr) ) { DXUTTrace( __FILE__, (DWORD)__LINE__, hr, L#x, true ); } }
#endif
#ifndef V_RETURN
#define V_RETURN(x) { hr = (x); if( FAILED(hr) ) { return DXUTTrace( __FILE__, (DWORD)__LINE__, hr, L#x, true ); } }
#endif
#else
#ifndef V
#define V(x) { hr = (x); }
#endif
#ifndef V_RETURN
#define V_RETURN(x) { hr = (x); if( FAILED(hr) ) { return hr; } }
#endif
#endif
boost\math\tools\rational.hpp 中有定義
template <std::size_t N, class T, class V>
inline V evaluate_even_polynomial(const T(&a)[N], const V& z)
{
return evaluate_polynomial(a, V(z*z));
}
裡面的V會衝突。
http://permalink.gmane.org/gmane.comp.lib.boost.ublas/320
http://www.guwi17.de/ublas/matrix_sparse_usage.html#Q2
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Effective_UBLAS
http://www.boost.org/doc/libs/1_44_0/libs/numeric/ublas/doc/operations_overview.htm#24transformations
http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?action=browse&diff=1&id=Frequently_Asked_Questions_Using_UBLAS
http://en.wikipedia.org/wiki/Sparse_matrix
http://www.boost.org/doc/libs/1_48_0/libs/numeric/ublas/doc/matrix_sparse.htm#compressed_matrix
http://zh.wikipedia.org/wiki/%E7%9F%A9%E9%99%A3%E4%B9%98%E6%B3%95
最近在寫圖學網格的project需要超大壓縮矩陣運算,
想說用boost的ulbas來寫,才發現我對壓縮矩陣這個資料結構與背景知識真的很不了解,
原來boost有三種壓縮矩陣,要如何才能快速遍歷非零值等等
其實,對矩陣來說 row_major 與 col_major 做乘法運算是最快的,
所以如果有兩個 row_major 互乘,請將其中一個轉成 col_major 再運算,
保證比較快,另外對超巨大稀疏矩陣來說,最好是實作成 col_major 與 row_major 共存,
並且每個元素都有存自己的位置,以方便更新 col_major 與 row_major ,
並且加速各種運算,主要使用在 Mesh 運算中。
http://balon777.wikidot.com/0xc000007b
用 boost thread 時要用動態連結,是俗稱的0xc000007b地獄
需要用 #define BOOST_THREAD_DYN_LINK 來解決
http://exold.com/article/using-boost-with-managed-c
另外最好把
#if defined(_MANAGED)
#define BOOST_USE_WINDOWS_H
#endif
加在stdafx.h標頭檔
最後,使用clr通常是為了他方便的UI,
真正的C++最好另外新增一個專案,編譯成動態或靜態程式庫來連結,
這是試了兩天24小時得到的經驗。
我一直以為大家都是會去自動自發搜尋的好學生,
我一直以為別人說的連100分都不一定會上,所以50分也可以有機會。
============分隔線==============
http://blog.ez2learn.com/2012/03/05/%E6%9B%BE%E7%B6%93%EF%BC%8C%E6%88%91%E6%9C%89%E5%80%8B%E5%A4%A2%E6%83%B3/
大意:在台灣架網路平台要小心,記得請法律顧問。
我想那些遊戲公司一定有請很多法律顧問。
sudo passwd root
感謝ubuntu 安裝硬碟分割說明
http://www.linuxbsdos.com/2011/05/05/how-to-install-ubuntu-11-04-on-a-btrfs-file-system/
samba的restart方法
sudo service smbd start
sudo service smbd stop
sudo service smbd restart
force user = your-user-name
reference:
http://ubuntuforums.org/showthread.php?t=1756575
http://linux.vbird.org/linux_server/0370samba.php
http://blog.segaa.net/blog.php/1/post/6/1221
http://community.linuxmint.com/tutorial/view/562
http://www.liberiangeek.net/2010/04/how-to-quickly-share-files-between-windows-and-linux-mint/
因為要改檔名的關係我把檔名後面加了一個 "." 檔案就不見了... ...
之前有發一篇這樣的文章,
但最近vs2008真的撐不住了,
所以看了一下保證是Intellisense,
vs2008下有狀態列,做每件事前都會顯示在狀態列上,
debug好方便!^^
在裝了很多其其怪怪的補丁都沒用後,
http://social.msdn.microsoft.com/Forums/en-US/vcgeneral/thread/1ac6c3fe-8256-4337-907b-ad947d7dffb4/
發現了,去把
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\feacp.dll
改成別的名字ex.
C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages\feacp.dll.Intellisense
就大功告成,現在就只能用 VAssist 來做事了。
不過F12好像還能用,有差嗎?
不能用的柬西有
managed C++ form preview
ATL class manager
一.健康
二.正確性
三.品質
這裡面有太多的故事可以講了,
還每天都遇到差不多的事,
當你妥協了這些東西,
你的生活短期會過的去,
長期來看你失去了進步的空間。
轉:http://forum.ubuntu.org.cn/viewtopic.php?f=86&t=311914
修改,打开终端,输入
如果想恢复
http://www.wretch.cc/blog/sida700514/34640045
我們都希望能夠吃得健康,也希望孩子們都能健康的長大!
更不懂的是,為什麼明明那麼多人反對的政策,卻還是有可能會通過!
bool PicObject::LoadPic( const char* path ) { CxImage* newImage = new CxImage(); newImage->Load(L"D2.png"); size_t w = newImage->GetWidth(); size_t h = newImage->GetHeight(); SDL_Surface *f_res = SDL_CreateRGBSurface(SDL_SWSURFACE, w, h,32,0,0,0,0); m_pic = SDL_DisplayFormatAlpha( f_res ); SDL_FreeSurface (f_res); f_res = m_pic; Uint8* res_data = (Uint8*)f_res->pixels; Uint8* buffer = 0; (Uint8*)newImage->GetBits(); long Size=0; newImage->Encode2RGBA(buffer, Size); printf("bpp %d\n", newImage->GetBpp()); // bpp == 24 for (size_t i = 0;i<h;++i) { for (size_t j=0;j<w;++j) { size_t sh = h-i-1; res_data[(sh*w+j)*4+0] = buffer[(i*w+j)*4+2]; res_data[(sh*w+j)*4+1] = buffer[(i*w+j)*4+1]; res_data[(sh*w+j)*4+2] = buffer[(i*w+j)*4+0]; res_data[(sh*w+j)*4+3] = buffer[(i*w+j)*4+3]; } } m_pic = SDL_DisplayFormatAlpha( f_res ); //Free the old image SDL_FreeSurface (f_res); //If the surface was optimized if (m_pic) return true; else return false; }
恥 廉 義 禮
library-prebuilt-for-windows 誠徵路人一起編譯?
沒有實力當然就是用血汗去換呀!