文章的變化
這個博客從建立到現在,其實已經有相當長的一段時間了. 我對計算機的熱情, 相比最初的時候, 已經消退了很多. 這並不是說我不喜歡它了, 只是它不再是我生活裡最重要的東西. 所以我打算從現在開始, 減少寫關於計算機相關的文章. 不是完全不寫, 只是不會把它當作主要內容了. ...
這個博客從建立到現在,其實已經有相當長的一段時間了. 我對計算機的熱情, 相比最初的時候, 已經消退了很多. 這並不是說我不喜歡它了, 只是它不再是我生活裡最重要的東西. 所以我打算從現在開始, 減少寫關於計算機相關的文章. 不是完全不寫, 只是不會把它當作主要內容了. ...
沒忍住,還是換了下顯卡。 1080ti的槽點有點多,絕區零戰鬥以及光映廣場跑圖時候的掉幀相當嚴重。 看了極客灣的視頻感覺是cpu瓶頸偏多,但是我又不能換cpu,因為代價過高了。 5000系Ryzen升級到7000系後,除了cpu的費用還需要更換主板,還有內存條。 ...
最近發生了很多事情, 先講講最近遊戲上的事情吧, 30號的時候國服賽馬娘公測了, 說實話還挺好玩的, 雖然我對養成沒什麼興趣, 但是這個遊戲是例外, 日常也挺溫馨的, 很有Cy的那種感覺, 算是精神食量了. 昨天去面試了一家公司, 說實話只有薪水我比較滿意, 其他都不太行, 那家公司是要做一個ERP系統, 但是我從來也沒有做過, 還有的就是那邊現在還沒有開發人員, 我進去就是從頭做起… 辦公場地看起來也破破爛爛的… 交通也不是很方便… 我要不要為了這個薪水去做, 而且到底能不能勝任我也很懷疑… ...
最近瞭解到了WebTorrent這個軟件, 這個是一個基於Web技術做的一個Torrent的下載器, 還能播放視頻. 挺神奇的, 這年頭Web都能做種了? 因為在我的印象裡, 目前的Web技術是不支持原生TCP/UDP這些網絡協議. ...
軟路由使用的固件基本已經定型了, 目前使用的Openwrt固件是18.06版本, 內核是5.4 https://github.com/SuLingGG/OpenWrt-Rpi 該項目只維護18.06-5.4k內核版本的OpenWrt, 不過18.06已經停止支持了. 原本18.06使用的內核版本是4.14, 這個固件是一個定製版, 使用的是5.4內核, 我也沒有使用過4.14內核, 也不清楚和5.4對比到底如何, 在我目前使用情況來看, 5.4內核還是比較可靠, 目前也沒有出現過非常明顯的網絡波動以及斷線的情況. ...
很長世界沒有寫博客了, 上個月末我回到了杭州, 在家裡休息了一週之後又開始重新找工作, 這次找工作我想這先找Go開發方面的工作, 自從上海工作之後我感覺我寫Go的水平熟練了不少, 想大膽試一試.
這幾天沒忍住,又入手了一塊便宜的軟路由,就是這個香橙派的R1plusLTS,這個型號的上一款R1plus和NanoPi R2S的配置一模一樣,處理器和網卡內存等等都一樣,這個LTS型號據說是芯片短缺的時候出現的,把網卡從RTL8211E換成了YT8531C了,內存從DDR4換成了LPDDR3, 其他還是一樣,不過這兩個硬件一換的話,原本R2S的固件和R1plus還能兼容,現在是沒辦法兼容了,網上對R1plusLTS適配的固件也比較少. 最壞的情況也得自己編譯了。 ...
最近碰上了一個需求,要做一個桌面程序,功能是將一個文件格式解析成json,然後在圖表上展示這個數據,但是這個文件可能有GB單位的大小,解析要防止爆內存,還有圖形也要防止崩潰。 文件格式解析倒反而不是什麼難點,主要是文件大小的問題以及格式,json是一種樹狀的類型,每個節點和上下文都是有關聯的,如果全放內存中非常容易爆內存 ,但是這個數據結構的特性導致很難將已經解析好的一部分數據直接先持久化,不然存取是一個問題,所以持久化肯定需要一些媒介。 ...
這個問題煩了了我1個小時。 1fn parse_path_operation( 2 &mut self, 3 path: &str, 4 op: Option<Box<impl FnOnce(&mut Self) + ?Sized>>, 5 ) -> Result<bool, anyhow::Error> 6 7self.parse_path_operation(path, None::<Box<dyn FnOnce(&mut IDir)>>)?; 這裡記錄一下這個簽名的正確用法。 下次學乖了,這種編譯器大小未知的trait類型一定要用Box或者其他的智能指針包起來,我想寫成這樣的簽名完全不行,雖然被調用方的簽名能通過編譯,但是調用方的簽名始終有問題,網上找了半天,還是得用智能指針管用… ...
好長時間沒寫博客了,現在在上海開始上班,算是新的開始。 今天隨便讀了一下Rust死靈書,記錄一下自己的領悟。 1let mut data = vec![1, 2, 3]; 2let x = &data[0]; 3data.push(4); 4println!("{}", x); 1'a: { 2 let mut data: Vec<i32> = vec![1, 2, 3]; 3 'b: { 4 // 'b 這個生命週期範圍如我們所願地小(剛好夠 println!) 5 let x: &'b i32 = Index::index::<'b>(&'b data, 0); 6 'c: { 7 // 這裡有一個臨時作用域,我們不需要更長時間的 &mut 借用 8 Vec::push(&'c mut data, 4); 9 } 10 println!("{}", x); 11 } 12} 這裡的問題更微妙、更有趣。我們希望 Rust 拒絕這個程序,理由如下:我們有一個存活的共享引用x到data的一個子集,當我們試圖把data的可變引用傳給push時。這將創建一個可變引用的別名,而這將違反引用的第二條規則。 ...