2013年7月13日 星期六

使用 tinyCC 建立 DLL 讓 freemat 呼叫

download tiny C Compiler

//calldll.c
#include "windows.h"
typedef void (*FreematPrint)(const char*);
FreematPrint FreematConsole;
__declspec(dllexport) void freemat_io_handler(FreematPrint pname) { FreematConsole = pname; }
__declspec(dllexport) void calldll(int i)
{
char sbuf[1024];
sprintf(sbuf,"Freemat console print. You are passing an integer %d:sizeof(int)=%d bytes\n",i,sizeof(int));
FreematConsole(sbuf);
}

%%calldll.m
import('calldll.dll','calldll','mCalldll','void', 'int32 st');
mCalldll(1232138);

REM makedll.bat
tcc -shared calldll.c -ocalldll.dll

----- Freemat console snapshot --------
--> calldll
Freemat console print. You are passing an integer 1232138:sizeof(int)=4 bytes
-->

2013年7月6日 星期六

學學 Maxima 先搞定運算元

1. 等號運算元 "=", 其反運算元(不等號)是為 "#". 兩者皆不會立即執行"賦值"運算,而是當執行像是 is (a=b) 等等運算式時才會賦值. 此等號運算元通常用於一個方程式內, 例如:

g1(x,y) := 2x+y=7;

g2(x,y) := 3x-7y=10;

solve([g1(x,y),g2(x,y)],[x,y]);

2. 指定運算元 ":", 定義運算式,將右邊的運算式指定給左邊的變數

a:3

此時 a 等於 3

3. 指定運算元 "::", 除了將右邊的值指定給左邊的變數外, 同時也將其值賦予其指定的運算式, 可以用"雙重指定"來幫助記憶

x: foo

x:: 123

此時 x 等於 foo, 而 foo 等於 123

4. 函數定義運算元 ":="

f(x,y) := x + y+1

g(x,y) := x -y +3

在此定義f(x,y) 為兩個變數的函數, 而 g(x,y) 為另一個含兩個變數的函數

5. 巨集定義運算元 "::=", 一連串的函數集合

f(x,y)::=(print("x=",x),print("y=",y));

6. 使用者也可以自行定義運算元, 如下可將 "dd" 當成 單個字符的前置運算元(不含雙引號)

prefix("dd");

經上述定義後, dd a 就如同 dd(a) 的用法了

7. 自行定義兩個字符中間的運算元, 如下可將 "##" 當成中間運算元(不含雙引號)

infix("##");

如再搭配運算元 := 來將運算式指定成函數後, 可以讓新的中間運算元賦予新意義

a ## b := a^b

經上述定義後, ## 運算元就如同 ^ 的用法了

8. kill 可以將上述運算元的定義及運算式全部移除

kill("dd");

kill("##");

remove 也可以將上述運算元的定義移除, 但只移除運算元定義的部份

remove("##,op);

9. 運算元 "'" 強制不做賦值運算

foo: 30;

x: 'foo;

在此例中, foo 雖已指定等於 30, 但加上運算元後, 僅就字串將 foo 賦予 x

10. 繪圖 plot2d(y(x),[x,-min,max]);以下定義了一個函數,並繪出函數的波形圖

y(x):=sin(x)*exp(-x/(2*%pi));

plot2d(y(x),[x,-2*%pi,2*%pi]);

2013年1月4日 星期五

壽險略知1,2

最近要繳保險費,以往都沒再注意,僅憑藉保險推銷員說,定存還不如買壽險的一番言論,我也栽進去了,年繳 20 萬保費繳期五年,到底划不划算?於是上網查了一些資料,才知什麼是解約金,減額繳清,展期等等名詞.再看看保單內容,會突然發覺自己好像受騙上當了,當你繳費期間,如果中途解約的的話,繳的期間越多損失就越大,拿我例子如果第五年解約的話損失將近 29 萬,如果要還本要到第 9/10 年才有可能,本想想是否該第一年後就不要繳了,如果選擇解約金,只能拿回97000,要損失10萬左右,如果選擇減額繳清雖不用再繼續負擔保費,但保障由33萬減為47000(就是說損失將近15萬=20萬減4萬7),也不划算,如果選擇展期的話,33萬保障可保再繼續維持39年半,也就是說如果在這39.5年間掛掉的話我的家人還可領到33萬,但我損失了20萬(掛點了怎還有損失?),如果過了39.5年我還沒掛點,這20萬就讓保險公司賺去了,如以儲蓄的角度來看,怎麼看都不對,但若以保障角度來看每年的保障是成長的(當然保費每年有要跟著繳)到第五年後保障已達 165萬,但我花了100萬,看似很划算,所以只能往好處想,就當作給後代或家人的一些遺產吧,想想我還是有能力來負擔這些保費的.所以也就釋懷了.突然想這應該是給有錢人當作遺產避稅兼賺錢的好工具吧,一般人如果沒閒錢恐怕繳個幾年就斷頭了,才發覺損失大了,因此我得出了一個結論是,壽險應該是老年人給後代子孫的一項好禮物吧,如果有壽險的,應該早點認清事實免得後悔不已說

2012年10月23日 星期二

Sony 手機可申請 box 雲端50G

昨天申請 box.com 的網路硬碟, Sony Xperia 的用戶可以獲得 50G bytes 空間,之前申請 Drpbox,有免費的 2G,想說太少了,還故意上傳 jpg檔,讓自由空間擴展到 3.8G, 現在有了 box雲端50G硬碟,煩惱不曉得該放什麼說,用不完了說. https://www.box.com/

玩玩 ICS 4.0.4

Xperia Sola 主目錄->設定 ->開發人員選項 有一些好玩的, 像是 顯示觸控回應: 打勾就可以看到手滑動時的軌跡球跑出來. 按下左側"開關螢幕"開起螢幕時, 當用懸浮操控的方式去解鎖時就會開啟 Floating touch 的功能(手套模式預設是開啟的), 如果是用一般手指去滑動解鎖,那就是跟平常操作沒兩樣(用接觸操作方式),配合上述"顯示觸控回應"懸浮操控用起來會比較順手,但我還是習慣關閉"Floating touch"的功能,當按下"開關螢幕"就會恢復正常了

Xperia Sola 更新 ICS 了

7 月買的 Xperia Sola,這禮拜開始更新到 Android 4.0.4了, 用起來感覺上開啟程式(app)來快多了,但似乎電池續航力有問題,電池消耗的太快了,今天將google+, Twitter, Facebook 及 Timescape 等軟體停止執行,再將螢幕亮度調成非自動調整並且調低亮度,好像電池消耗速度有減慢下來,還在觀察中.

2011年8月29日 星期一

好用的自由軟體

辦公室軟體 LibreOffice: http://www.libreoffice.org/download/
文字編輯器 Notepad++ : http://notepad-plus-plus.org/
工程/數學軟體 freemat : http://freemat.sourceforge.net/
再來一個重量級工程/數學軟體 Octave: http://www.gnu.org/software/octave/
數學線性代數軟體 Wxmaxima: http://andrejv.github.com/wxmaxima/
解壓縮軟體 7-zip : http://www.7-zip.org/
室內設計 SweetHome 3D: http://www.sweethome3d.com/index.jsp
虛擬電腦 VirtualBox: http://www.virtualbox.org/