可以用C#編程語言做哪些好玩的東西?


C#程序我主要寫了兩個:

1、Quick

受到OSX上面的Alfred,以及Sublime的影響,我寫了個叫作Quick的工具。

默認是按Ctrl+Q調出Quick的主窗口,在不同環境下可以調出不同窗口。如在Word/WPS下:

在Excel/ET下:

在普通環境下:

或者:

Find是調用everything的API來找文件,calc是自己寫的一個計算器來計算結果。

Quick開放了一個介面,可以實現介面,來接入自己的插件。

Quick支持中文搜索、拼音搜索,以及英文搜索。

默認按Ctrl+`,可以彈出關聯菜單,如下:

這樣就可以快速進行搜索了。

以上的功能,均可以配置。

GitHub - Froser/Quick: A convenience tool makes you more effective

2、Hunter3 爬蟲工具

在實習的時候,做了個「爬蟲」程序:

目標是,將bing、google、baidu等網站上的doc、xls、ppt等文件下載到本地

原理是,通過搜索filetype:+文件類型,在搜索引擎中匹配結果,然後調用下載線程來下載。

結果一般是用正則表達式來匹配,而不同的搜索網站匹配方式不一樣,因此定義了一種策略文件,表示什麼樣的網站,要用什麼樣的模式來匹配。

Hunter3內置一個詞典,會將詞典中的詞作為關鍵字,加上filetype:文件類型作為前綴搜索,然後記錄下下載文件的MD5防止下載重複的文件。後來為了防止搜索引擎把自己屏蔽,寫了個代理下載的功能,並且可以自定義UserAgent來偽裝成瀏覽器。

Froser/Hunter3 · GitHub歡迎大家來提意見和fork


可以做大型遊戲,例如:OpenRA

該開源遊戲為國外CC愛好者所製作,非本人作品!GitHub鏈接在下面)

GitHub:

GitHub - OpenRA/OpenRA: Open Source real-time strategy game engine for early Westwood games such as Command Conquer: Red Alert written in C# using SDL and OpenGL. Runs on Windows, Linux, *BSD and Mac OS X.

官方編譯好的版本下載:

OpenRA - Home

OpenRA是經典的命令與征服系列(包括紅警95、泰伯利亞黎明、泰伯利亞之日、沙丘2k、紅警2,其中泰伯利亞之日和紅警2需要自己編譯)遊戲的非官方的開源復刻版本,其採用C#編寫,很大程度上還原了原版遊戲的體驗(儘管在一些小的遊戲細節上還原得還不完美),並且該遊戲還可以聯網對戰,支持Windows/Linux/Mac三種平台。該遊戲的運行需要原版遊戲的數據包,可以從網上下載也可以從遊戲的正版光碟中安裝


工作需要,最近在學C#,閑暇無聊寫了兩個小工具。一個批量建立文件夾,一個磁力鏈接搜索器。工具如下:

這個是磁力鏈接搜索器,做這個的意圖就是,平時在互聯網上找一些資源時,網站上的廣告簡直要人命,而且好多你懂的圖片,被別人看到很是難堪,所以就想自己做一個搜索資源的工具。這個工具本質就是給某磁力鏈接搜索引擎發送請求,然後獲取網頁源碼後,利用正則表達式分離出需要的內容再展示出來。現在已經可以搜索磁力鏈接和百度雲資源了,以後應該會增加其他站點。

*老版本的代碼已經完全棄用了,現在重新面向對象寫了一個,維護升級更便利,正在增加多線程防止假死,搜索軟體等功能,不定時更新。

這個是批量生成文件夾工具。可以從TXT文件導入,也可以根據一定的規則生成。原理也非常簡單,就是對字元串各種操作。

總結一下,做什麼好玩的東西全看自己,有想法就去實現,水平高做出東西的質量高,水品低就做簡單的東西,沒什麼是不可能的。

放上鏈接吧,有用拿去,以後更新的話都在這裡:http://pan.baidu.com/s/1nvET0EH


遊戲啊

Unity 用 C#


1.給她做的禮物。運行後屏幕上會飄愛心。

五六年前做的了,一直挺喜歡編程,可惜不是學這個專業的,所以比較簡陋,大神們輕噴。

找了找程序,發現還在哈哈。

當時費了很多心思,那段時間一直趴網上研究別人的代碼。

不過畢業後也沒有從事編程相關的工作。

分開也已經快四年了。2.前幾年人人網有個人人農場特別火,做過一個自動收菜的小助手,支持多個賬號登錄,每天收的不亦樂乎。

可惜當時腦殘,加了一段代碼,每收一次菜就訪問下自己百度空間的一個blog,想藉此看看有多少人用這個軟體。

然後發現訪問量猛增。

然後我的百度空間就被查封了。

再也沒有解封過,完全不給人改過自新的機會,怨念。。

程序找著了,代表著我編程水平的巔峰~

3.本科那會喜歡上課看小說,可惜很多網站不支持打包下載,當時流量又少,所以做了個抓取網頁文字合併的工具(天啊我上大學那會究竟在琢磨些什麼。。。)

現在看看還是蠻懷念當時那股勁頭的。


瀉藥。

遊戲我不會寫,之前看了個專欄用python寫爬蟲找租房,看著教程不爽然後自己擼了個.NET版本的,完善了功能之後基本處於能用的狀態了。

詳細如下:

高德API+.NET解決租房問題(JS相關) - 一隻程序汪的自我修養 - 知乎專欄

高德API+Python解決租房問題(.NET版) - 一隻程序汪的自我修養 - 知乎專欄

總結來說,沒撒不能做的,只有想不到和不想做的。


哇,被輪子哥贊了啊……

抄一個其它問題下邊的回答:

鏈接:Win10 UWP的開發體驗是怎樣的? - YufunHe 的回答

來源:知乎

著作權歸作者所有,轉載請聯繫作者獲得授權。

前幾天查火車票,找了幾個windows store裡邊的app,都不好用,界面還難看。後來花了幾天做了一個: 火車出行助手

其實做的最有意思的是一個UI自動化測試的工具,然後用這個工具控制QQ,分析收到的字元串,然後根據一定規則自動回復。


使用閉源包 http://www.autocser.com/Download/AutoCSer.Example.zip 可以獲得更好的性能測試結果:

JSON 序列化測試在 40W/s 以上,反序列化測試在 30W/s 以上。

XML 序列化測試在 30W/s 以上,反序列化測試在 15W/s 左右。

二進位序列化與反序列化測試都在 200W/s 以上。

TCP 函數調用服務在簡單的加法驗證計算測試中支持 220W/s 的調用吞吐。

如果採用自定義序列化直接操作網路數據流的方式甚至可以穩定到 5KW+/s 的計算吞吐,每次計算需要 20 位元組交互數據,數據傳輸量為 1GB/s。當然這種方式既繁瑣而且不通用,還容易出錯,違背函數調用模式初衷,只有在極端性能需求的特殊情況才考慮。

以上測試環境,操作系統 Win10,CPU i5-6400 2.7GHz,8G 內存,128G SSD。

-------- 補充分割線 --------

既然特指C#,那我就說一些其它語言不容易做的:

1. 使用 Emit 對序列化操作去反射優化,比如對 31 種常用數據類型組成的 class 進行單線程序列化測試

JSON 序列化測試在 14W/s 以上,反序列化測試在 20W/s 以上。

XML 序列化測試在 16W/s 以上,反序列化測試在 12W/s 以上。

二進位序列化與反序列化測試都在 100W/s 以上。

具體的數據定義如下

[fastCSharp.emit.dataSerialize(IsReferenceMember = false, IsMemberMap = false)]
class filedData
{
public bool Bool;
public byte Byte;
public sbyte SByte;
public short Short;
public ushort UShort;
public int Int;
public uint UInt;
public long Long;
public ulong ULong;
public DateTime DateTime;
public float Float;
public double Double;
public decimal Decimal;
public Guid Guid;
public char Char;
public string String;
public bool? BoolNull;
public byte? ByteNull;
public sbyte? SByteNull;
public short? ShortNull;
public ushort? UShortNull;
public int? IntNull;
public uint? UIntNull;
public long? LongNull;
public ulong? ULongNull;
public DateTime? DateTimeNull;
public float? FloatNull;
public double? DoubleNull;
public decimal? DecimalNull;
public Guid? GuidNull;
public char? CharNull;
}

具體測試項目參見 fastCSharp 的 demo.serializePerformance,這是一個基本的常規測試。
對於有一定性能優化經驗的朋友,提供了在序列化時指定輸出緩衝區的 API,重用緩衝區可以獲得更高的性能支持。
序列化只是 Emit 的一個使用案例,對於需要重複調用反射的功能都可以使用 Emit 來提高運行時性能。
當然個人認為 Emit 應該只作為必要的膠水存在,也就是說主體代碼應該還是使用 C#;而不是整個模塊功能都使用 Emit 實現,這樣不利於維護與擴展,也不利於未來的性能優化處理。

2. 使用靜態代碼生成技術結合 Emit,在性能接近 C++ 高性能網路庫的同時,讓 TCP 網路通訊程序和本地函數調用一樣簡單,基本不再需要為數據封包與解包寫程序。

使用 100 客戶端,在 2s 內完成每客戶端收發 1W 次 500 位元組的數據包操作。
具體測試項目參見 fastCSharp 的 demo.tcpPerformanceServer / demo.tcpPerformanceClient。
由於這是一個基本的性能測試 DEMO,為了方便指定數據包大小,所以是以數據包作為參數來使用,正常情況下可能是各種類型的數據對象。
其它相關 DEMO 可以參見 demo.testCase、demo.chatServer / demo.chatClient、demo.fileTransferServer / demo.fileTransferClient、demo.loadBalancingTcpCommandWeb / demo.loadBalancingTcpCommand。

3. 使用靜態代碼生成技術,可以做前後端一體自動化的 WEB 視圖框架。

前後端採用統一的模板引擎規則,解決前端 MVVM 框架與後端數據 API 在複雜數據序列化問題上不可調和矛盾,同時部分解決前端框架對於搜索引擎不友好的問題。

我覺得對於 http://ASP.NET/MVC 這種純後端引擎的陣營,在互聯網時代要看看外面的世界,至少要嘗試了解一下使用數據驅動 UI 的前端 MVVM 框架。

比如 全部 OJ 題目 這個頁面,在未登陸狀態下執行以下腳本

fastCSharp.Skin.BodyData("currentUser").$Set({Name:"我是遊客"});

可以看到頁面頂部的變化,可以看到通過數據操作 UI 是多麼的簡捷方便;比如 WPF 也是這個方向,只不過這種設計對於強類型語言而言流程稍微繁瑣一些。
這裡 https://51nod.codeplex.com/SourceControl/latest 你可以看到 51Nod 整個網站除了業務邏輯層以外的全部源代碼與頁面組織方式(當然最後一次更新是 2016/06/30)。
我認為單純的前端框架或者單純的後端框架,在功能上都是殘缺的,在複雜的數據結構面前,單純的前後端框架之間必然造成不可調和的矛盾;所以我在這裡需要強調 前後端一體化自動化編碼 兩個重點。
具體文檔請運行 fastCSharp 的文檔項目 fastCSharp.document,而且 fastCSharp.document 本身就是一個 WEB 項目可供參考。

4. 使用靜態代碼生成技術結合 Emit,可以設計支持強類型可嵌入式內存資料庫引擎

在 TCP 模式下對單表格操作可以支持 30W/s 的操作頻次(其中包括緩存同步處理),消耗兩個 CPU 核心。

在 TCP 模式下的單表格載入數據量在 70W/s 左右,消耗略多於一個 CPU 核心。
具體測試項目參見 fastCSharp 的 demo.memoryDatabase,本地嵌入模式相對於 TCP 模式可以獲得更高的性能,兩年多前曾經做過相關性能測試,兩者性能差距可能達到 6 倍,當然某些時候硬碟寫操作可能成為瓶頸。
不過這種內存容量大過硬碟容量的需求並不適合用來處理現在流行的「大數據」,即使精心規劃數據緩存結構加上內存高配的伺服器也可能處理不了億級的數據量,所以我認為只適合高頻次 update 的需求。
前面 1/2/3 中提到的功能都是經過多年實際項目檢驗的,然而並不推薦大家使用這個內存資料庫引擎,因為它還只是一個原型,還沒有經過實際項目的歷練,這裡只是說明 C# 可以做這種設計與工作。

以上測試環境,操作系統 Win10,CPU i5-4570 3.2GHz,16G DDR3,256G SSD。

最後吐槽一下 Win10,在簡單的性能測試當中,和 Win7 等以前的操作系統在網路性能方面可能會存在 30% 以上的性能差距;但是這個性能「糟糕」而且附帶流氓特性的操作系統將「被」成為 windows 的主流。


曬一些我的小作品給題主:

滑鼠跟隨的動態小掛件。基於WPF技術。

視頻封面給女朋友的生日禮物—在線播放—優酷網,視頻高清在線觀看視頻

做文字錄入時自動語音核對。基於WinForm技術及微軟的TTS語音庫。視頻封面語音即時校對—在線播放—優酷網,視頻高清在線觀看視頻

這是類似遊戲外掛的掛機程序,自動操作一款操蛋的CAD實現動畫幀輸出 。基於WinForm技術。

視頻封面通過編程實現自動操作CAD軟體輸出序列動畫幀視頻

這是一個郵件客戶端程序,預設好若干收件人,然後每次只要把文件拖動進去,點發送就可以了。基於WPF技術。

這是一個屏幕尺工具,適合Windows平板,可以用它測量屏幕上擺放的物體,還可以用它來導入圖片以還原拍攝物體的真實尺寸觀感(比如網購的時候,商品說明裡有照片有尺寸,你想感受一下實際觀感,就可以用這個功能來實現)。基於Windows應用商店APP技術。

這是一個開發人員實用工具,可以用來測試、分析正則表達式,其主要功能是利用多重層級延展(也可以有旁支)的正則表達式樹實現複雜的文字內容轉換,從而不用每每都去單獨編寫程序實現。基於UWP技術。

這個逗逼的小程序可以播放脈衝信號音,來傳入電話聽筒實現撥號,原理請看《名偵探柯南劇場版——戰慄的樂譜》。基於WPF技術。

網站內容審核輔助功能,可以用來做機器預審或人工審核參考。基於http://ASP.Net技術。

一個用於淘寶登貨的軟體,因為早期的淘寶登貨流程很反人類(我不知道現在啥情況了),所以做了這麼個軟體,從Excel表中導入數據以自動填充登貨頁面表單。基於WinForm技術。

爐石傳說遊戲外掛,這現在純粹是自用的,以前我出售過,賣的還不錯,不過網易找我事,我就不繼續賣了。基於WinForm及WF技術。


買了個Kindle,用來看網路小說。但是網上經常找不到優質的下載源,於是 利用追書神器的API寫了個電子書下載器,可以自動轉kindle能用的格式。

github:GitHub - qq573011406/KindleHelper: 自動下載小說,轉換成kindle可用的格式,並發送到kindle上

下載地址1:Releases · qq573011406/KindleHelper · GitHub

下載地址2: https://pan.baidu.com/s/1dEWLErZ 密碼: 2wm8

Kindle效果圖:


太空工程師內部的可編程模塊,浮游炮開發中。。。


我說各位答主大神,能不能放一些較為完整的源碼出來,好讓後來者可以學習學習~~(期待臉~)

程序的作用就是可以減少重複勞動,提高效率,本人編程水平目前較渣,只能寫一些簡單的小工具。

例如我經常計算不同相機鏡頭組合的景深,於是開發了一個景深計算器。

根據如下的公式計算,適合中等距離的景深的計算:

界面:

源碼:鏈接: http://pan.baidu.com/s/1c1HFRYo 密碼: 8xmg再次強烈期望各位答主大神放一些源碼出來~


小工具,鏈接:https://pan.baidu.com/s/1geJ947x

功能:搜索文件的小工具。

喜歡請點贊


雖然不好玩,不過挺實用的。

做過一個關顯示器的小工具,為我省了不少電

因為當時有一台電腦是一體機,然後這個一體機非常人性化的只有一個電源開關,而沒有顯示器開關=.=這就導致我沒法只關顯示器

就是這個東西,代碼都是網上找的,調用user32.dll就行了。

好,下面我再截一張效果圖,我點擊中間這個關閉圖標,

奇怪,剛才屏幕黑了,我們再來一遍

艹,屏幕又黑了。不說了,我先去修電腦了


C#大法好, 我要放出我的神器了

---

上周想學安卓開發, 但是Google給的SDK管理器那叫一個慢, 好像還是單線程下載?

然後我就做了這個

MELODUET ANDROID SDK MANAGER

目前, 它的主要特點有:

  • 可以從多個源之間切換
  • 可以獲得SDK的所有文件, 以及文件下載地址, SHA1校驗值等信息
  • 支持通過文件名, 下載地址等搜索

右鍵複製下載地址之後可以寬頻滿速下載

順便開了源: GitHub - Zhangzijing/MeloduetAndroidSDKManager: A tool to fetch all android sdk download urls and more infomation, then you can download them by multi-thread download tools.

還有一個Markdown編輯器, 當時找到的編輯器太大了, 不適合快速查看文件, 然後...

這個東西非常快, 而且實現了插件功能, 自帶

  • HTML導出, 預覽
  • 全屏寫作
  • 插件管理器

全部都有快捷鍵

還有這個minecraft啟動器, 當初開mc服, 專門給伺服器做的.

還有一個StallarisTranslationTools

給Stallaris漢化組做的一個工具集, 主要功能就是給 翻譯索引器給翻譯內容都編上號, 然後在遊戲里發現翻譯不準確的地方, 抄下編號, 然後輸入到翻譯定位器, 就可以自動打開編輯器, 並把游標定位到文件的具體一行

由於是命令行工具, 就不上圖了

最後博客求光顧:void*


= =這麼瞧不起c#么,作為一個windows主推的開發語言,說到底有啥是C#不能做的?從貪吃蛇到魔獸世界都沒問題吧


比如我們就用c#寫了一個桌面彈幕app,可以直接在你演講或者展示的時候讓觀眾把彈幕發送上來。

http://www.danmakupie.com

許多學校里的玩會還有微軟亞洲研究院都已經開始用我們的產品啦~有興趣的話可以來試試


等你學會了 unity 你就知道c# 可以做出什麼牛逼的東西了……


用Unity寫遊戲,然後發現Unity好像沒有把Debug語句自動注釋掉的功能,又不想每個語句上都加個判斷,就用C# 的winform寫了個工具,把所有的代碼文件先遍歷出來,然後一個個的文本讀進去,再一行一行的找是否有Debug信息,找到後,在這一行的開頭加了「//Liu//」,把所有的都注釋了,之所以要加「//Liu//」,是為了方便,再一鍵把它解除注釋而不影響其它的...


寫過一個爬蟲,可以爬出某網站上的種子(你懂得),並且帶圖片預覽,自動生成html。

其實用C#寫這類東西挺方便的,很多人爬蟲喜歡用python,但我一直用C#寫,主要是WebClient和HttpRequest很方便。

另外用C#做一些平時經常用到的小工具也很方便。

C#還可以跟Office結合,可以給Outlook寫一些插件,定時彈出周報發送模板,自動回復郵件,等等,總之在Windows平台上,如果想快速的開發一些應用式的小程序,C#真是非常不錯的選擇。


推薦閱讀:

音樂界里什麼叫唱Demo?一般是什麼人唱?為什麼要唱Demo?

TAG:程序員 | 軟體設計 | C# | Demo |