十八岁

二零零一年到二零一九年,十八个年头从指间溜走。我也从当初那个天真浪漫的小孩子变成了今天的这幅模样。(自认为现在也很浪漫)其实我早早地就有了成年人的偏见,有了成年人「污秽」的东西,不想狡辩,我就这样大大方方地承认吧。

到现在为止,理想主义始终被我放在首位,我努力让自己活得更加自由。尽管有那么些时候会碰壁,但我抹抹鼻子,相信换个方向也能抵达终点。十八岁,可以很清晰地察觉到「自己」的时间在减少,甚至察觉最后「自己」也会消失殆尽,但没关系。消失是存在的一部分,如同村上所说“死亡不是生的对立面”。以往的这些年,我如田村卡夫卡,从现实中莫名其妙地消失去,遁入理想世界中。可真正地到了那里才发现,所谓的理想仍然是人类的小玩意,它又会重复,最后成我们现在的文明。而我现在处于一个回归社会的过程,带着理想主义返回社会,接受现实,并希望能改变现实。姑且让我把那句话改一改:愿我出走半生,归来仍是少年。

「0」在当下,「1」在未来,现在由我自己来定义。想做什么去做,想学什么去学,反之亦然,这就是我所理解的自由。

以前的我经常受人帮助,有了他们才有我的现在,才能有这个十八岁,请让我继续厚着脸皮说:以后的日子也请多多关照。越长大越有责任,不仅是对家人朋友,也对陌生人,对这个社会,甚至对国家。现在不是八九十年代,我不必再以“为中华崛起而读书”来贴上红旗标签,但意义犹在。

以此篇纪念我此生唯一的十八岁,至此搁笔。

改变不了的改变

对未来期待着,迷茫着,恐惧着。

我渴求着未来会有所不同,却不知自己要有什么不同,恐惧着这样的生活:毕业工作结婚过完这一生。

如果一切努力都是以此结尾,那努力有何意义?

为何要活着?目的是为何?我为何存在于此?我是个什么东西? 我面前的所有真的有意义吗?

看着谈笑风声同学,看着地铁站来来往往的人流,看着校园里手牵手的情侣……
怎么也想不出生命的意义在于何处。

高中老师、军训教官,说他们已经固定了人生,已无法再有改变,说我们应该有所不同。

但是,我们应该有什么不同呢?毕业工作后,生活也随之固定了吧,也逃不出和他们的套路吧?

说什么改变,所有都已被决定,我们只不过是走过程罢了。

C# 事件(Event) 学习笔记

为了实现WPF界面下的断点续传等下载功能,从Github上找到这个项目: https://github.com/markodt/SGet
里面的下载类使用了一些事件
我以此来学习事件的用法

首先C#中没有事件这个类型,事件是一个特殊的委托。

下面是一个简单事件声明(没有使用参数

//声明下载完成事件
public event EventHandler DownloadCompleted;

//定义事件触发函数
protected virtual void RaiseDownloadCompleted()
{
    if (DownloadCompleted != null)
    {
       //注意这里的EventArgs.Empty
       DownloadCompleted(this, EventArgs.Empty);
    }
}

//在某处使用触发函数,触发事件
public void Start(){
this.RaiseDownloadCompleted();
}

//其他地方有需要时就调用事件
WebDownloadClient download = new WebDownloadClient(url);
download.DownloadCompleted += download.DownloadCompletedHandler;

然而上述的做法并不安全,参考:

//3.定义触发事件的方法
protected virtual void OnNewMail(NewMailEventArgs e)
{
    /* 第1种做法            
     if(this.NewMail != null)
     {
        this.NewMail(this,e);
     }            
     */
     
    /* 第二种做法
    EventHandler<NewMailEventArgs> temp = this.NewMail;
    if (temp != null)
    {
        temp(this, e);
    }
    */
 
    //第三种做法
    EventHandler<NewMailEventArgs> temp = Interlocked.CompareExchange(ref this.NewMail, null, null);
    if (temp != null)
    {
        temp(this, e);
    }
}

第一种做法是很常见的做法,判断不为空,然后就触发。CLR里提到这是线程不安全的做法,因为单我们判断不为空后,准备执行时,另一个线程将从委托链将委托移除,此时变成了空,引发NullReferenceException异常。
第二、三种做法都是线程安全的,因为它通过一个临时委托变量(委托链保存了所有委托),通过上一篇对委托链的了解,我们知道对委托链进行Combine/Remove实际都会创建一个新的数组对象,此时对temp没有影响。但实际上事件主要在单线程的环境下使用,所以一般也不会出现这种问题。

来自 https://www.cnblogs.com/ldyblogs/p/event.html

于是 琉璃Craft 就这样开始了

琉璃Craft名字来源于最喜欢的黑猫w

不知道为什么就是想开一个服务器,能赚到钱是不可能了x

想想我入门计算机可能是从做Minecraft服务器开始。
从PE版本到PC,从插件配置开始感受到英语对计算机的重要性。

琉璃Craft其实已经3岁了,最初它叫做雾失之暮。
雾失之暮是一个1.8.9的纯净服务器,短暂的两个月就结束了一周目,我也进入了高中时期,人生的转折点。

https://mc.yukino.co/
琉璃Craft 官网

配置WAMP+SSL踩过的那些坑

前言

最近由于没有备案,80端口被服务商堵了,因而不得不使用HTTPS。然而在Windows环境下并没有lamp那样一键生成证书的工具,所有都由百度和Google搞定。

证书申请

https://www.sslforfree.com/ 申请证书,首先使用了FTP来确认域名拥有权,然而却出现了迷之错误。后来采取解析DNS的方式,成功。

ssl证书的配置

Google上找到这篇文章:https://zuziko.com/tutorials/how-to-enable-https-ssl-on-wamp-server/
根据具体过程来。然而最后的restart却出现问题,Apache死活开不了。
此处经过一小时的搜索,最后的解决方案是这样的:
cd到c:/wamp64/bin/apache/apache2.4.39/bin/ 输入httpd -t
根据语法错误提示来修改http-ssl.conf文件

最后没有错误,即为成功x

Padavan固件与Aria2:较为优雅的多终端看番方案

前言

本想在BiliBili看番的,奈何月供大会员实在是太贵。
以前的BiliBili还是一个需要引流再放弹幕的小众网站,变成现在这个模样难免令人唏嘘不已。
本篇采用路由器上的Padavan固件与Aria2,实现下番与多终端播放(网络共享)。

准备

先确认路由器是否支持Padavan固件。
建议采取16G以上的U盘。

Padavan固件

先在路由器刷入Breed,再刷入该固件。
推荐使用一下两种魔改版本:
h大:http://opt.cn2qq.com/padavan/
荒野无灯:http://p4davan.80×86.io/download/

开启Aria2

高级设置->USB应用程序->Aria2 下载管理
先在路由器根目录下创建aria文件夹,再点击开启Aria2。

开启文件共享

高级设置->USB应用程序->SMB 服务器 (Windows网络邻居)

番剧种子的收集

动漫花园:https://www.dmhy.org/
Mikan:https://mikanani.me/

多终端共享

Android:ES文件浏览器
MAC与Windows:自带
IOS:没用过

拓展

若是种子没速度,先再百度云离线下载,再使用Chrome插件添加到Aria2中。

用C#写爬虫抓小姐姐

前言

用Google图片搜索壁纸的时候无意间发现一个网站:http://daybreakforce.blog129.fc2.com/
画风是这样子的:

哇,这么多小姐姐图片啊。
哇,还根据不同的番做了归档啊。
也许我该试着写个爬虫把她们抱回家哦。
C#才入门而已,代码写的也不是很多,这倒是一个不错的方式来锻炼呢。为了老婆

实现流程

索引

代码写得很烂吧QwQ 请多指教
打算直接根据网站左边的索引来找图片,也容易对我的文件夹做一个分类。先粗略查看了一下,其中有一部分是我不需要的。(没有漂亮姐姐

查看源代码,把需要的链接复制出来:

<ul class="sub_menu">
<li class="caNo142 caCt10"><a href="blog-category-142.html">蒼き鋼のアルペジオ (10)</a></li>
<li class="caNo176 caCt2"><a href="blog-category-176.html">蒼の彼方のフォーリズム (2)</a></li>
<li class="caNo167 caCt2"><a href="blog-category-167.html">アブソリュート・デュオ (2)</a></li>
<li class="caNo132 caCt7"><a href="blog-category-132.html">甘城ブリリアントパーク (7)</a></li>
<li class="caNo163 caCt1"><a href="blog-category-163.html">ヴァルキリーインパルス (1)</a></li>
<li class="caNo159 caCt12"><a href="blog-category-159.html">うたわれるもの (12)</a></li>
<li class="caNo30 caCt14"><a href="blog-category-30.html">AngelBeats! (14)</a></li>
<li class="caNo85 caCt4"><a href="blog-category-85.html">えびてん 公立海老栖川高校天悶部 (4)</a></li>
<li class="caNo224 caCt1"><a href="blog-category-224.html">エロマンガ先生 (1)</a></li>
<li class="caNo45 caCt12"><a href="blog-category-45.html">オオカミさんと七人の仲間たち (12)</a></li>
<li class="caNo105 caCt13"><a href="blog-category-105.html">俺の妹がこんなに可愛いわけがない (13)</a></li>
<li class="caNo99 caCt3"><a href="blog-category-99.html">俺の彼女と幼なじみが修羅場すぎる (3)</a></li>
<li class="caNo231 caCt1"><a href="blog-category-231.html">カードキャプターさくら (1)</a></li>
<li class="caNo48 caCt12"><a href="blog-category-48.html">学園黙示録H.O.T.D (12)</a></li>
<li class="caNo219 caCt1"><a href="blog-category-219.html">学戦都市アスタリスク (1)</a></li>
<li class="caNo194 caCt1"><a href="blog-category-194.html">ガラスの花と壊す世界 (1)</a></li>
<li class="caNo38 caCt23"><a href="blog-category-38.html">ガンダムシリーズ (23)</a></li>
<li class="caNo212 caCt1"><a href="blog-category-212.html">ガーリッシュ ナンバー (1)</a></li>
<li class="caNo213 caCt2"><a href="blog-category-213.html">ガールズ&パンツァー (2)</a></li>
<li class="caNo37 caCt29"><a href="blog-category-37.html">けいおん! (29)</a></li>
<li class="caNo180 caCt1"><a href="blog-category-180.html">月刊少女野崎くん (1)</a></li>
<li class="caNo152 caCt4"><a href="blog-category-152.html">Gate 自衛隊 彼の地にて、斯く戦えり (4)</a></li>
<li class="caNo217 caCt13"><a href="blog-category-217.html">けものフレンズ (13)</a></li>
<li class="caNo80 caCt5"><a href="blog-category-80.html">恋と選挙とチョコレート (5)</a></li>
<li class="caNo187 caCt6"><a href="blog-category-187.html">甲鉄城のカバネリ (6)</a></li>
<li class="caNo141 caCt15"><a href="blog-category-141.html">ご注文はうさぎですか? (15)</a></li>
<li class="caNo216 caCt2"><a href="blog-category-216.html">小林さんちのメイドラゴン (2)</a></li>
<li class="caNo138 caCt17"><a href="blog-category-138.html">冴えない彼女の育てかた (17)</a></li>
<li class="caNo233 caCt1"><a href="blog-category-233.html">地獄少女 (1)</a></li>
<li class="caNo146 caCt3"><a href="blog-category-146.html">Charlotte (3)</a></li>
<li class="caNo186 caCt1"><a href="blog-category-186.html">シュヴァルツェスマーケン (1)</a></li>
<li class="caNo198 caCt2"><a href="blog-category-198.html">進撃の巨人 (2)</a></li>
<li class="caNo60 caCt11"><a href="blog-category-60.html">侵略!イカ娘 (11)</a></li>
<li class="caNo86 caCt6"><a href="blog-category-86.html">生徒会の一存 (6)</a></li>
<li class="caNo47 caCt12"><a href="blog-category-47.html">生徒会役員共 (12)</a></li>
<li class="caNo104 caCt9"><a href="blog-category-104.html">PSYCHO-PASS (9)</a></li>
<li class="caNo188 caCt1"><a href="blog-category-188.html">じょしらく (1)</a></li>
<li class="caNo209 caCt1"><a href="blog-category-209.html">ステラのまほう (1)</a></li>
<li class="caNo65 caCt1"><a href="blog-category-65.html">そらのおとしもの (1)</a></li>
<li class="caNo82 caCt45"><a href="blog-category-82.html">ソードアート・オンライン (45)</a></li>
<li class="caNo102 caCt2"><a href="blog-category-102.html">たまこまーけっと (2)</a></li>
<li class="caNo215 caCt1"><a href="blog-category-215.html">だから僕は、Hができない。  (1)</a></li>
<li class="caNo197 caCt1"><a href="blog-category-197.html">ダンジョンに出会いを求めるのは間違っているだろうか (1)</a></li>
<li class="caNo84 caCt15"><a href="blog-category-84.html">中二病でも恋がしたい! (15)</a></li>
<li class="caNo208 caCt7"><a href="blog-category-208.html">デート・ア・ライブ (7)</a></li>
<li class="caNo185 caCt4"><a href="blog-category-185.html">To LOVEる -とらぶる- (4)</a></li>
<li class="caNo68 caCt9"><a href="blog-category-68.html">夏目友人帳 (9)</a></li>
<li class="caNo23 caCt15"><a href="blog-category-23.html">NARUTO (15)</a></li>
<li class="caNo199 caCt1"><a href="blog-category-199.html">ネトゲの嫁は女の子じゃないと思った (1)</a></li>
<li class="caNo110 caCt4"><a href="blog-category-110.html">のんのんびより (4)</a></li>
<li class="caNo172 caCt1"><a href="blog-category-172.html">ハイキュー!! (1)</a></li>
<li class="caNo78 caCt12"><a href="blog-category-78.html">這よれ!ニャル子さん (12)</a></li>
<li class="caNo168 caCt1"><a href="blog-category-168.html">ハッカドール (1)</a></li>
<li class="caNo123 caCt5"><a href="blog-category-123.html">ハナヤマタ (5)</a></li>
<li class="caNo128 caCt1"><a href="blog-category-128.html">ばらかもん (1)</a></li>
<li class="caNo79 caCt18"><a href="blog-category-79.html">氷菓 (18)</a></li>
<li class="caNo67 caCt3"><a href="blog-category-67.html">緋弾のアリア (3)</a></li>
<li class="caNo143 caCt6"><a href="blog-category-143.html">響け!ユーフォニアム (6)</a></li>
<li class="caNo154 caCt1"><a href="blog-category-154.html">干物妹!うまるちゃん (1)</a></li>
<li class="caNo149 caCt4"><a href="blog-category-149.html">Fate/kaleid liner プリズマ☆イリヤ (4)</a></li>
<li class="caNo196 caCt1"><a href="blog-category-196.html">プラスティック・メモリーズ (1)</a></li>
<li class="caNo161 caCt2"><a href="blog-category-161.html">ヘヴィーオブジェクト (2)</a></li>
<li class="caNo131 caCt19"><a href="blog-category-131.html">Fate/stay night (19)</a></li>
<li class="caNo136 caCt3"><a href="blog-category-136.html">Fate/zero (3)</a></li>
<li class="caNo192 caCt4"><a href="blog-category-192.html">Fate 他シリーズ (4)</a></li>
<li class="caNo203 caCt2"><a href="blog-category-203.html">ブラック・ブレッド (2)</a></li>
<li class="caNo75 caCt5"><a href="blog-category-75.html">Black rock shooter (5)</a></li>
<li class="caNo89 caCt22"><a href="blog-category-89.html">僕は友達が少ない (22)</a></li>
<li class="caNo69 caCt14"><a href="blog-category-69.html">ゆるゆり (14)</a></li>
<li class="caNo22 caCt3"><a href="blog-category-22.html">マクロスシリーズ (3)</a></li>
<li class="caNo109 caCt7"><a href="blog-category-109.html">機巧少女は傷つかない (7)</a></li>
<li class="caNo66 caCt45"><a href="blog-category-66.html">魔法少女まどか★マギカ (45)</a></li>
<li class="caNo148 caCt2"><a href="blog-category-148.html">魔法少女リリカルなのは (2)</a></li>
<li class="caNo42 caCt2"><a href="blog-category-42.html">MAJOR (2)</a></li>
<li class="caNo151 caCt2"><a href="blog-category-151.html">やはり俺の青春ラブコメはまちがっている。 (2)</a></li>
<li class="caNo54 caCt26"><a href="blog-category-54.html">ヨスガノソラ (26)</a></li>
<li class="caNo133 caCt4"><a href="blog-category-133.html">ラブライブ! (4)</a></li>
<li class="caNo87 caCt21"><a href="blog-category-87.html">リトルバスターズ! (21)</a></li>
<li class="caNo184 caCt17"><a href="blog-category-184.html">Re:ゼロから始める異世界生活 (17)</a></li>
<li class="caNo202 caCt1"><a href="blog-category-202.html">Rewrite (1)</a></li>
<li class="caNo108 caCt4"><a href="blog-category-108.html">ログ・ホライズン (4)</a></li>
<li class="caNo107 caCt5"><a href="blog-category-107.html">ローゼンメイデン (5)</a></li>
<li class="caNo164 caCt1"><a href="blog-category-164.html">ワンパンマン (1)</a></li>
</ul>
</li>
<ul class="sub_menu">
<li class="caNo52 caCt8"><a href="blog-category-52.html">STG (8)</a></li>
<li class="caNo222 caCt1"><a href="blog-category-222.html">白猫プロジェクト (1)</a></li>
<li class="caNo50 caCt8"><a href="blog-category-50.html">戦国BASARA (8)</a></li>
<li class="caNo32 caCt269"><a href="blog-category-32.html">東方Project (269)</a></li>
<li class="caNo230 caCt2"><a href="blog-category-230.html">battlefield (2)</a></li>
<li class="caNo220 caCt1"><a href="blog-category-220.html">崩壊学園 (1)</a></li>
<li class="caNo63 caCt3"><a href="blog-category-63.html">Monster Hunter (3)</a></li>
</ul>
</li>
<ul class="sub_menu">
<li class="caNo223 caCt4"><a href="blog-category-223.html">3人いる! ~Happy Wedding in Livingroom~ (4)</a></li>
<li class="caNo181 caCt3"><a href="blog-category-181.html">77 (セブンズ) (3)</a></li>
<li class="caNo169 caCt8"><a href="blog-category-169.html">アイドルマスター シンデレラガールズ (8)</a></li>
<li class="caNo53 caCt5"><a href="blog-category-53.html">穢翼のユースティア (5)</a></li>
<li class="caNo179 caCt4"><a href="blog-category-179.html">暁の護衛 (4)</a></li>
<li class="caNo228 caCt1"><a href="blog-category-228.html">茜色の境界線 (1)</a></li>
<li class="caNo120 caCt8"><a href="blog-category-120.html">アストラエアの白き永遠 (8)</a></li>
<li class="caNo229 caCt1"><a href="blog-category-229.html">アズールレーン (1)</a></li>
<li class="caNo204 caCt5"><a href="blog-category-204.html">アマツツミ (5)</a></li>
<li class="caNo210 caCt2"><a href="blog-category-210.html">アリスティア・リメイン (2)</a></li>
<li class="caNo112 caCt8"><a href="blog-category-112.html">イノセントガール (8)</a></li>
<li class="caNo61 caCt9"><a href="blog-category-61.html">失われた未来を求めて (9)</a></li>
<li class="caNo232 caCt3"><a href="blog-category-232.html">お兄ちゃん、朝までずっとギュってして! (3)</a></li>
<li class="caNo51 caCt12"><a href="blog-category-51.html">俺たちに翼はない (12)</a></li>
<li class="caNo81 caCt1"><a href="blog-category-81.html">顔の無い月 (1)</a></li>
<li class="caNo64 caCt6"><a href="blog-category-64.html">カタハネ (6)</a></li>
<li class="caNo73 caCt10"><a href="blog-category-73.html">カミカゼ☆エクスプローラー! (10)</a></li>
<li class="caNo211 caCt4"><a href="blog-category-211.html">枯れない世界と終わる花 (4)</a></li>
<li class="caNo111 caCt95"><a href="blog-category-111.html">艦隊これくしょん (95)</a></li>
<li class="caNo221 caCt1"><a href="blog-category-221.html">かんぱに☆ガールズ (1)</a></li>
<li class="caNo127 caCt8"><a href="blog-category-127.html">G.I.B. ガールズ・イン・ブラック (8)</a></li>
<li class="caNo227 caCt1"><a href="blog-category-227.html">ガールフレンド(仮) (1)</a></li>
<li class="caNo134 caCt4"><a href="blog-category-134.html">キスアト (4)</a></li>
<li class="caNo214 caCt2"><a href="blog-category-214.html">吸血姫のリブラ (2)</a></li>
<li class="caNo144 caCt3"><a href="blog-category-144.html">Clover Day's (3)</a></li>
<li class="caNo43 caCt14"><a href="blog-category-43.html">恋色空模様 (14)</a></li>
<li class="caNo174 caCt7"><a href="blog-category-174.html">恋×シンアイ彼女 (7)</a></li>
<li class="caNo119 caCt13"><a href="blog-category-119.html">恋がさくころ桜どき (13)</a></li>
<li class="caNo200 caCt2"><a href="blog-category-200.html">恋剣乙女 (2)</a></li>
<li class="caNo165 caCt6"><a href="blog-category-165.html">恋する気持ちのかさねかた (6)</a></li>
<li class="caNo121 caCt1"><a href="blog-category-121.html">この大空に、翼をひろげて (1)</a></li>
<li class="caNo76 caCt14"><a href="blog-category-76.html">死神のテスタメント (14)</a></li>
<li class="caNo190 caCt5"><a href="blog-category-190.html">素晴らしき日々~不連続存在~ (5)</a></li>
<li class="caNo130 caCt5"><a href="blog-category-130.html">世界と世界の真ん中で (5)</a></li>
<li class="caNo205 caCt3"><a href="blog-category-205.html">千恋*万花 (3)</a></li>
<li class="caNo189 caCt2"><a href="blog-category-189.html">千の刃濤、桃花染の皇姫 (2)</a></li>
<li class="caNo207 caCt8"><a href="blog-category-207.html">タユタマ2 (8)</a></li>
<li class="caNo74 caCt17"><a href="blog-category-74.html">ダ・カーポ(D.C)シリーズ (17)</a></li>
<li class="caNo225 caCt1"><a href="blog-category-225.html">天気雨 (1)</a></li>
<li class="caNo182 caCt2"><a href="blog-category-182.html">DRACU-RIOT! (ドラクリオット) (2)</a></li>
<li class="caNo147 caCt1"><a href="blog-category-147.html">なついろレシピ (1)</a></li>
<li class="caNo62 caCt11"><a href="blog-category-62.html">なないろ航路 (11)</a></li>
<li class="caNo150 caCt1"><a href="blog-category-150.html">箱庭ロジック (1)</a></li>
<li class="caNo175 caCt1"><a href="blog-category-175.html">働くオトナの恋愛事情 (1)</a></li>
<li class="caNo218 caCt1"><a href="blog-category-218.html">花咲ワークスプリング (1)</a></li>
<li class="caNo153 caCt1"><a href="blog-category-153.html">パニカル・コンフュージョン (1)</a></li>
<li class="caNo113 caCt8"><a href="blog-category-113.html">ハピメア (8)</a></li>
<li class="caNo139 caCt1"><a href="blog-category-139.html">はるかぜどりに、とまりぎを。 2nd Story -月の扉と海の欠片- (1)</a></li>
<li class="caNo59 caCt1"><a href="blog-category-59.html">Hello,good-bye (1)</a></li>
<li class="caNo193 caCt4"><a href="blog-category-193.html">向日葵の教会長い夏休み (4)</a></li>
<li class="caNo114 caCt4"><a href="blog-category-114.html">planetarian (4)</a></li>
<li class="caNo58 caCt15"><a href="blog-category-58.html">ヘッドホン少女 (15)</a></li>
<li class="caNo122 caCt5"><a href="blog-category-122.html">Berry's (5)</a></li>
<li class="caNo25 caCt15"><a href="blog-category-25.html">FORTUNE ARTERIAL (15)</a></li>
<li class="caNo117 caCt2"><a href="blog-category-117.html">星ノ音サンクチュアリ (2)</a></li>
<li class="caNo49 caCt8"><a href="blog-category-49.html">MagusTale (8)</a></li>
<li class="caNo1 caCt10"><a href="blog-category-1.html">ましろ色シンフォニー (10)</a></li>
<li class="caNo39 caCt6"><a href="blog-category-39.html">窓辺ななみ (6)</a></li>
<li class="caNo162 caCt1"><a href="blog-category-162.html">見上げてごらん、夜空の星を (1)</a></li>
<li class="caNo115 caCt2"><a href="blog-category-115.html">らぶ らぶ らいふ (2)</a></li>
<li class="caNo118 caCt7"><a href="blog-category-118.html">リリカルりりっく (7)</a></li>
<li class="caNo178 caCt5"><a href="blog-category-178.html">レミニセンス (5)</a></li>
<li class="caNo183 caCt3"><a href="blog-category-183.html">ワールド・エレクション (3)</a></li>
</ul>
</li>
<li class="caNo33 caNosub"><img src="https://blog-imgs-44-origin.fc2.com/p/a/r/paro2day/catB1n.gif" width="29" height="14" alt="" /><a href="blog-category-33.html">VOCALOID (190)</a></li>
<ul class="sub_menu">
<li class="caNo171 caCt2"><a href="blog-category-171.html">和泉つばす (2)</a></li>
<li class="caNo156 caCt6"><a href="blog-category-156.html">カントク (6)</a></li>
<li class="caNo157 caCt7"><a href="blog-category-157.html">karory (7)</a></li>
<li class="caNo140 caCt1"><a href="blog-category-140.html">桐葉 (1)</a></li>
<li class="caNo116 caCt14"><a href="blog-category-116.html">梱枝りこ (14)</a></li>
<li class="caNo158 caCt2"><a href="blog-category-158.html">白もち桜 (2)</a></li>
<li class="caNo160 caCt4"><a href="blog-category-160.html">ごとP (4)</a></li>
<li class="caNo126 caCt4"><a href="blog-category-126.html">鈴平ひろ (4)</a></li>
<li class="caNo3 caCt49"><a href="blog-category-3.html">てぃんくる (49)</a></li>
<li class="caNo135 caCt2"><a href="blog-category-135.html">七尾 奈留 (2)</a></li>
<li class="caNo173 caCt3"><a href="blog-category-173.html">ななか まい (3)</a></li>
<li class="caNo201 caCt6"><a href="blog-category-201.html">ななろば華 (6)</a></li>
<li class="caNo177 caCt2"><a href="blog-category-177.html">緋賀ゆかり (2)</a></li>
<li class="caNo145 caCt3"><a href="blog-category-145.html">みけおう (3)</a></li>
<li class="caNo155 caCt1"><a href="blog-category-155.html">三嶋くろね (1)</a></li>
<li class="caNo124 caCt8"><a href="blog-category-124.html">水沢深森 (8)</a></li>
<li class="caNo137 caCt3"><a href="blog-category-137.html">山本和枝 (3)</a></li>
<li class="caNo166 caCt2"><a href="blog-category-166.html">憂姫はぐれ (2)</a></li>
<li class="caNo195 caCt1"><a href="blog-category-195.html">柚子奈ひよ (1)</a></li>
<li class="caNo129 caCt2"><a href="blog-category-129.html">涼香 (2)</a></li>
</ul>
</li>
<li class="caNo83 caNosub"><img src="https://blog-imgs-44-origin.fc2.com/p/a/r/paro2day/catB1n.gif" width="29" height="14" alt="" /><a href="blog-category-83.html">オリジナル壁紙 (393)</a></li>
<li class="caNo170 caNosub"><img src="https://blog-imgs-44-origin.fc2.com/p/a/r/paro2day/catB1n.gif" width="29" height="14" alt="" /><a href="blog-category-170.html">海外キャラクター (5)</a></li>
<li class="caNo7 caNosub"><img src="https://blog-imgs-44-origin.fc2.com/p/a/r/paro2day/catB1n.gif" width="29" height="14" alt="" /><a href="blog-category-7.html">不明壁紙 (11)</a></li>

接下来就是链接获取的问题。我在获取链接的同时也需要获取后面的文本,便于给文件夹分类。
如何准确的获取链接呢?仔细观察一下,每一个链接都有一个共同的地方:blog-category-,从这里入手吧w

struct SubIndex
{
public int urlFirstIndex;
public int urlLastIndex;
public int nameFirstIndex;
public int nameLastIndex;
}    
//从硬盘读取我复制好的部分
FileStream fileStream = File.OpenRead("C:/Users/Yukiy/Desktop/getUrls.txt");
StreamReader streamReader = new StreamReader(fileStream);
string fileStr = streamReader.ReadToEnd();
//遍历出网址出现的次数与字符位置
List<SubIndex> subStrs = new List<SubIndex>();
int count = 0;
int index = 0;
while(fileStr.IndexOf("blog-category-",index + 1) != -1)
{
count++;
index = fileStr.IndexOf("blog-category-", index + 1);
//保存索引
SubIndex subStr;
subStr.urlFirstIndex = index;
subStr.urlLastIndex = fileStr.IndexOf("\"", index) - 1;
subStr.nameFirstIndex = subStr.urlLastIndex + 3;
subStr.nameLastIndex = fileStr.IndexOf(" (", subStr.nameFirstIndex) - 1;
subStrs.Add(subStr);
}

blog-category-的两边获取出现的链接和分类名的首字符与末字符索引,然后使用String.Substring()函数截取。计划通√
获取了链接后怎么获得图片呢?先打开链接读取源代码吧。要注意的是这里要使用UTF8的形式读取流。
然而并不是所有的图片都在同一页上,还要能够翻页才行。

<!--■ENDナビゲーション■-->
<div id="center_navi">|<a href="http://daybreakforce.blog129.fc2.com/" title="先頭ページへ戻る">ホーム</a>|<a href="http://daybreakforce.blog129.fc2.com/?all" title="記事の一覧を表示する">全記事一覧</a>|<a href="http://daybreakforce.blog129.fc2.com/category105-1.html" title="次のページへ移動する">次のページ</a> >>  </div>

观察源码得到可以翻页的文章都会加上次のページへ移動する这个title,点击下一页之后地址的变化也是有规律的。
第一页:http://daybreakforce.blog129.fc2.com/blog-category-105.html
下一页:http://daybreakforce.blog129.fc2.com/category105-1.html
所以这是又是一个关键点。

//读取网页源码
string webStr;
Picture picture = (Picture)obj;
failedToGetHtml:
try
{
WebRequest request = WebRequest.Create(picture.sourseUrl);
WebResponse response = (WebResponse)request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream, Encoding.UTF8);
webStr = reader.ReadToEnd();
//查询该页面是否有下一页
for (int i = 1; webStr.IndexOf("次のページへ移動する") != -1; i++)
{
//删除原来的 次のページへ移動する 便于下一个页面判断
webStr = webStr.Replace("次のページへ移動する", string.Empty);
//获取下一页链接
int firstIndex = Path.GetFileName(picture.sourseUrl).LastIndexOf("-") + 1;
int lastIndex = Path.GetFileName(picture.sourseUrl).LastIndexOf(".") - 1;
string secondUrl = @"http://daybreakforce.blog129.fc2.com/category" + Path.GetFileName(picture.sourseUrl).Substring(firstIndex, lastIndex - firstIndex + 1) + "-" +i + ".html";
//写入原网页源码中
request = WebRequest.Create(secondUrl);
response = (WebResponse)request.GetResponse();
dataStream = response.GetResponseStream();
reader = new StreamReader(dataStream, Encoding.UTF8);
string secondWebUrl = reader.ReadToEnd();
webStr += secondWebUrl;
}
}
catch
{
goto failedToGetHtml; //读取失败后重复读取
}

换浏览器查看源代码,观察到大图和缩略图的差别是后面多了一个字符s
大图:https://blog-imgs-95-origin.fc2.com/d/a/y/daybreakforce/20161106093301a33.jpg
缩略图:https://blog-imgs-95-origin.fc2.com/d/a/y/daybreakforce/20161106093301a33s.jpg

<a href="https://blog-imgs-95-origin.fc2.com/d/a/y/daybreakforce/20161106093301a33.jpg" target="_blank"><img src="https://blog-imgs-95-origin.fc2.com/d/a/y/daybreakforce/20161106093301a33s.jpg" alt="俺の妹がこんなに可愛いわけがない 黒猫 06_剑空藏月" border="0" width="540" height="338" /></a>

以此为依据获取图片的链接,我使用了正则表达式来获取链接。(这里有一个反复出现的图片,把它排除掉)

List<string> urls = new List<string>();
string regexStr = @"https://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)+\.jpg";  //查找.jpg的正则表达式
Regex reg = new Regex(regexStr, RegexOptions.IgnoreCase);  //正则表达式的类实例化
MatchCollection mc = reg.Matches(webStr);  //进行匹配
for (int i = 0; i < mc.Count; i++)
{
//避免搜集固定存在的一个图片
if(mc[i].Groups[0].Value != @"https://blog-imgs-110.fc2.com/d/a/y/daybreakforce/20170917_060838_270.jpg")
{
urls.Add(mc[i].Groups[0].Value);
}
}
//删除缩略图url
for (int i = 0; i < urls.Count; i++)
{
if (urls[i].LastIndexOf("s") == urls[i].LastIndexOf(".") - 1)
{
urls.RemoveAt(i);
}
}

好了,这下得到了链接和图片分类名称,开始下载吧ww


下载代码不贴出来了,具体看源码。
同时也使用了多线程编程,看源码吧XD
大体的方法就是这些,有更好的方法请回复我,我在这里先抛砖引玉了。

写在后面

我感觉爬虫其实就是抓住网页关键存在的地方,自己再随着规律写代码来完成任务。
你要图包?
1LbTgIH5sUy9LUJzVKUQvEQ x7s4
源码:http://yukino.nos-eastchina1.126.net/code/WebSpider.zip

结尾点题

我老婆

AMD平台安装Mac High Sierra:啃一口黑苹果如何?

前言


一直在折腾的黑苹果终于成功了。
从初三到高三,断断续续尝试了几次,都是死在显卡驱动上。这次换了张GTX960再来,显卡很简单就驱了。
我使用了来自国外AMD OS X论坛的教程:https://forum.amd-osx.com/viewtopic.php?f=24&t=4127
在此发出此教程的中文翻译和我安装的流程。

我的配置

  • CPU:AMD X4 860K
  • 主板:技嘉F2A88XM-DS2
  • 显卡:GTX 960 2G
  • 声卡:集成Realtek ALC887 8声道音效芯片
  • 网卡:板载Realtek RTL8111F千兆网卡

原文中使用的镜像以及过程中使用的程序都在这里:
链接: https://pan.baidu.com/s/1X1HAQKABBvI5Q4YA3MMFpA 密码: adrd

教程

开始之前电脑需要为UEFI启动模式
(以下文本翻译自原教程)

安装之前

使用Transmac将镜像文件(HighSierraV3Unofficial.dmg)Restore至USB设备
务必以管理员的方式运行Transmac

BIOS设置

设置你的SATA接口为AHCI

开启 USB Legacy support 和 EHCI handoff

关闭 Serial Port

开启 CSM 和 UEFI for Hard drives and USB devices
即将BOOT启动顺序设置为UEFI优先

设置 Secure Boot 为 Other OS

这里的一些设置可能找不到,没有的话就不用设置。

开始安装

选择启动方式界面的按键因主板而异,自己上网查一下。
以UEFI的方式从你的USB设备启动系统

选择Boot macOS from HighSierraAMD 按回车键

如果这是一次新的安装MAC(你还没分区),选择Disk Utility,点击Continue

在左边的饼状图里选择你要作为系统盘的区域,点击Partition按钮将其分离出来。
左边格式选择为GUID/Extended Journaled,填入你的磁盘名字,点击Apply。
(这一步你也可以选择抹去你的分区再创建,见仁见智了ww 反正目的是要建立出MAC系统的磁盘。)

返回。选择 Reinstall macOS,点击Continue

点击Continue

都点击Agree

选择刚才的系统盘,点Continue

开始复制文件,几分钟后会重启

再次以UEFI的方式从你的USB设备启动系统

选择Boot macOS from HighSierraAMD

选择 Utilities 下的 Open Terminal

输入 cd /Volumes/HighSierraAMD at the prompt
再输入 preinstall

输入你之前创建的系统盘的名字

等它完成之后,点击苹果标志,选择Restart

再次以UEFI的方式从你的USB设备启动系统

选择 Boot macOS Install from 你刚才输入的系统盘名字

之后会进入安装界面,安装时间取决于你的硬盘。一般为25到45分钟。

安装完成后会自动重启

再次以UEFI的方式从你的USB设备启动系统

选择Boot macOS from HighSierraAMD

进入以后从点击Utilities里面的Terminal

输入cd /Volumes/HighSierraAMD
再输入amd

输入你之前选择的系统盘名称

完成后的一分钟将自动重启

再次以UEFI的方式从你的USB设备启动系统

A卡用户

对于使用AMD显卡的人,这里你需要以下步骤来驱动显卡

  1. 在Clover界面选择Options – Configs 选择 config_injectATI
  2. 添加你的FakeID到Options – Graphics Injector

你需要视频?
   0:00 / 01:30速度洗脑循环 00:00

选择 Boot macOS Install from 你刚才输入的系统盘名字

选择你的国家

选择你的键盘

对着图片上的光标点就好




输入你的信息

点击Customize

对着光标自己点

在地图上选择你的时区

全不选

开启或关闭Siri随你

完成你的安装

系统安装完成后

驱动安装

镜像直接集成了网卡驱动和万能声卡驱动,我的直接就驱了。若是没有正常驱动的话就去找解决方案吧。
关于声卡驱动参考:http://bbs.pcbeta.com/viewthread-1508611-1-1.html

AMD主板请放弃声卡驱动仿冒,直接使用万能驱动

N卡驱动:我使用WebDriver,需要注意的一点是需要找到对应版本的WebDriver。(对于这个镜像的WebDriver我已经放在上面的百度云里)
A卡驱动:按照上面教程里说的方式来。

安装Clover

照着视频做就好
   0:00 / 0:00速度洗脑循环 00:00视频加载失败

我在这里出现了问题:只有UEFI U盘的方式才能启动MAC,用硬盘无法启动MAC或者从硬盘启动后驱动出现问题。
解决方案:
使用Clover Configurator来挂在U盘和硬盘的EFI分区,然后将U盘的EFI分区里面的EFI文件夹复制到硬盘EFI分区里覆盖。(你也可以使用EFI MountainShow来代替Clover Configurator挂载分区)

进入另一个U盘的WinPE,使用EasyUEFI添加Clover的启动项并设为首选,问题解决。(你也可以先从之前的U盘启动电脑里的Windows来操作)

请移步 http://bbs.pcbeta.com/viewthread-1791875-1-1.html 回复一下,让更多人看到吧
享受你的MAC!