0%

迷你码农遇到的个性化问题.遇到这个问题还得上网查,说明对Git不了解.有时间看看廖雪峰的Git教程.

报错信息

报错信息

解决方法

  1. 在Github Desktop客户端右击项目,然后Open in Terminal
  2. 输入命令:ls -al,会看到.git文件夹
  3. 输入命令:cd .git,打开.git文件夹
  4. 输入命令:ls -al,会看到config文件
  5. 输入命令:vim config,打开config文件
  6. 按键盘键,将光标移动到[remote "origin"]这行,按键盘i键进入插入模式.
  7. delete键删除包括本行在内的三行
  8. 删除完之后,按Esc键,退出编辑模式.然后英文状态下输入shift+:,输入wq,保存退出.
  9. Github Desktop完全退出重新打开,现在就能Sync了.

参考链接:Solved: ERROR: Repository not found

–EOF–

同学前几天面试面到了这个题,毕竟闷了半天才闷出来.记录一下省的忘了…

NSString+Category.h文件

#import <Foundation/Foundation.h>
@interface NSString (Category)
/**
 * 根据分隔符,分隔字符串
 *
 * @param symbol 分隔符
 *
 * @return 由被分隔完的字串组成的数组
 */
- (NSArray *)splitStringWithSymbol:(NSString *)symbol;
@end

NSString+Category.m文件

#import "NSString+Category.h"
@implementation NSString (Category)
- (NSArray *)splitStringWithSymbol:(NSString *)symbol {
    if (!self || [self isEqualToString:@""] || !symbol || [self isEqualToString:@""]) {
        NSException *e = [NSException exceptionWithName:@"NullPointerException" reason:@"self and symbol can't be nil or @\"\"" userInfo:nil];
        @throw e;
    }
    NSMutableArray *mutableArr = [NSMutableArray new];
    NSInteger length = symbol.length;
    NSString *tempStr = nil;
    for (int startIndex = 0, endIndex = 0; endIndex <= self.length - length; endIndex++) {
        tempStr = [self substringWithRange:NSMakeRange(endIndex, length)];
        if ([tempStr isEqualToString:symbol]) {
            NSString *splitedString = [self substringWithRange:NSMakeRange(startIndex, endIndex - startIndex)];
            if (splitedString && ![splitedString isEqualToString:@""]) {
                [mutableArr addObject:splitedString];
            }
            startIndex = endIndex + (int)length;
        } else if (endIndex == self.length - length){
            NSString *splitedString = [self substringWithRange:NSMakeRange(startIndex, endIndex - startIndex + length)];
            if (splitedString && ![splitedString isEqualToString:@""]) {
                [mutableArr addObject:splitedString];
            }
        }
    }
    return [mutableArr copy];
}
@end

以上代码有个问题,当字符串是,asdf,,123,分隔字符是,,分隔结果是(asdf,123),而不是(asdf,(前面一个是数组的逗号),123).
试了一下官方的componentsSeparatedByString方法,相同的字符串跟分隔符,输出结果是("",asdf,"",123),连是否是@""都没判断.Java当中实验的结果跟OC结果相同.官方方法都这样,我想我是想多了.

–EOF–

封装的几种方法

  1. 分类:UITextField/UISearchBar
  2. 自定义控件
  3. 工具类

从上到下优先度依次降低.

用哪种方式封装

通过分类,如果通过分类[UITextField searchBar]方法名跟类名明显对不上号;[UISearchBar searchBar]返回结果是一个UITextField,跟类名也对不上.所以我们需要自定控件,自定义控件就需要继承UITextField.

代码

== CTSearchBar.h 文件==

#import <UIKit/UIKit.h>
@interface CTSearchBar : UITextField
+ (instancetype)searchBar;
@end

CTSearchBar.m

#import "CTSearchBar.h"
@implementation CTSearchBar
- (instancetype)initWithFrame:(CGRect)frame {
    if (self = [super initWithFrame:frame]) {
        self.font = [UIFont systemFontOfSize:15];
        self.placeholder = @"请输入搜索内容";
        self.clearsOnBeginEditing = YES;
        self.clearButtonMode = UITextFieldViewModeAlways;
        UIImage *image = [UIImage imageNamed:@"searchbar_textfield_search_icon"];
        UIImageView *searchIcon = [[UIImageView alloc] initWithImage:image];
        searchIcon.width = 30;
        searchIcon.height = 30;
        searchIcon.contentMode = UIViewContentModeCenter;
        self.leftView = searchIcon;
        self.leftViewMode = UITextFieldViewModeAlways;
    }
    return self;
}
+ (instancetype)searchBar {
    return [[self alloc] init];
}
@end

调用方式

- (void)viewDidLoad {
    [super viewDidLoad];
    UITextField *searchBar = [CTSearchBar searchBar];
    searchBar.width = 500;
    searchBar.height = 35;
    self.navigationItem.titleView = searchBar;
}

上面代码中searchBar.width = 500;这种方式是因为我给UIView做了一个分类,所以可以直接赋值.详见:通过Category让UIView更方便的布局

以上仅提供简单思路,还可以封装更加复杂的搜索框,像新浪微博的.

–EOF–

原因:

  1. 项目中多次用到自定义UIBarButtonItem,所以需要抽取出来
  2. 代码该干什么就干什么,因为这段代码是自定义。UIBarButtonItem,所以应该由UIBarButtonItem做。所以创建一个分类。
  3. 命名习惯,代码规范。要用[UIBarButtonItem itemWith…]这种形式。

自定义UIBarButtonItem

UIBarButtonItem+Category.h文件

#import <UIKit/UIKit.h>
@interface UIBarButtonItem (Category)
+ (NSArray *)itemWithTarget:(id)target action:(SEL)action image:(NSString *)image lighlightImage:(NSString *)lighlightImage;
@end

UIBarButtonItem+Category.m文件

#import "UIBarButtonItem+Category.h"
@implementation UIBarButtonItem (Category)
/**
 * 自定义一个UIBarButtomItem
 *
 * @param target 点击之后调用哪个对象
 * @param action 点击之后调用对象里面的哪个方法
 * @param image 普通状态下图片
 * @param lighlightImage 高亮状态下图片
 *
 * @return 创建完的一个UIBarButtomItem数组
 */
+ (NSArray *)itemWithTarget:(id)target action:(SEL)action image:(NSString *)image lighlightImage:(NSString *)lighlightImage {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[UIImage imageNamed:image] forState:UIControlStateNormal];
    [button setImage:[UIImage imageNamed:lighlightImage] forState:UIControlStateHighlighted];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    button.size = button.currentImage.size;
    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]initWithCustomView:button];
    UIBarButtonItem *speaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
    speaceItem.width = -5;
    return @[speaceItem,buttonItem];
}
@end

调用

在ViewController调用或者在自定义的UINavigationController的push方法里面调用。

//ViewController调用
self.navigationItem.leftBarButtonItems = [UIBarButtonItem itemWithTarget:self action:@selector(back) image:@"back_icon_red" lighlightImage:@"back_icon_red"];
//自定义UINavigationController的push方法调用
viewController.navigationItem.leftBarButtonItems = [UIBarButtonItem itemWithTarget:self action:@selector(back) image:@"back_icon_red" lighlightImage:@"back_icon_red"];

注意:action方法写在ViewController或自定义UINavigationController里面。

当然还可以在分类里做其他自定义的样式。

–EOF–

方法一

通过工厂方法,然后在需要左上角显示图标的ViewController的viewDidLoad方法调用。代码如下:

Factory.h文件

#import <Foundation/Foundation.h>
@interface Factory : NSObject
+ (void)addBackButton:(UIViewController *)viewController;
@end
1
==Factory.m文件==
#import "Factory.h" @implementation Factory + (void)addBackButton:(UIViewController *)viewController{ UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[UIImage imageNamed:@"community_highlight"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"community_highlight"] forState:UIControlStateHighlighted]; CGRect frame = button.frame; frame.size = button.currentImage.size; button.frame = frame; UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]initWithCustomView:button]; UIBarButtonItem *speaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; speaceItem.width = -5; viewController.navigationItem.leftBarButtonItems = @[speaceItem,buttonItem]; } @end
1
2
3
4
### 方法二
这种方法是通过实现UINavigationController的pushViewController方法,拦截所有push进来的viewController,然后对其进行设置。代码如下:

==BaseNavigationController.h文件==
#import <UIKit/UIKit.h> @interface BaseNavigationController : UINavigationController @end
1
==BaseNavigationController.m文件==
#import "BaseNavigationController.h" @interface BaseNavigationController () @end @implementation BaseNavigationController - (void)addBackButton:(UIViewController *)viewController{ if (self.viewControllers.count > 0) { viewController.hidesBottomBarWhenPushed = YES; UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; [button setImage:[UIImage imageNamed:@"back_icon_red"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"back_icon_red"] forState:UIControlStateHighlighted]; [button addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; button.size = button.currentImage.size; UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc]initWithCustomView:button]; UIBarButtonItem *speaceItem = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; speaceItem.width = -5; viewController.navigationItem.leftBarButtonItems = @[speaceItem,buttonItem]; } } - (void)back{ [self popViewControllerAnimated:YES]; } - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{ NSLog(@"push"); [self addBackButton:viewController]; [super pushViewController:viewController animated:animated]; } #pragma -mark 生命周期 - (void)viewDidLoad { [super viewDidLoad]; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; } @end ``` > 注意: 1. 用方法一如果某个viewController需要单独设置navigationItem的图标,则在ViewController的viewDidLoad方法里设置即可。 2. 用了方法二如果在push之前调用设置view样式有关的方法,则先调用viewDidLoad方法,然后调用push方法。这时如果在viewDidLoad方法里设置navigationItem的图标将跟push方法拦截viewController设置的效果一样。 > 所谓的拦截,大部分都是通过自定义类,然后重写自带方法实现的。 **--EOF--**

之前我们给一个控件设置宽高或者位置的时候会用下面代码:

UIView *view = [UIView new];
CGRect frame = view.frame;
frame.size.width = 100;
view.frame = frame;

上面方式很麻烦,不解释。下面是对UIView的分类,方便了对控件的布局:
UIView+Category.h文件

#import <UIKit/UIKit.h>
@interface UIView (Extension)
@property (nonatomic,assign) CGFloat x;
@property (nonatomic,assign) CGFloat y;
@property (nonatomic,assign) CGFloat width;
@property (nonatomic,assign) CGFloat height;
@property (nonatomic,assign) CGSize size;
@property (nonatomic,assign) CGPoint origin;
//- (void)setX:(CGFloat)x;
//- (CGFloat)x;
//- (void)setY:(CGFloat)y;
//- (CGFloat)y;
//- (void)setWidth:(CGFloat)width;
//- (CGFloat)width;
//- (void)setHeight:(CGFloat)height;
//- (CGFloat)height;
//- (void)setOrigin:(CGPoint)origin;
//- (CGPoint)origin;
//- (void)setSize:(CGSize)size;
//- (CGSize)size;
@end

UIView+Category.m文件

#import "UIView+Category.h"
@implementation UIView (Extension)
- (void)setX:(CGFloat)x {
    CGRect frame = self.frame;
    frame.origin.x = x;
    self.frame = frame;
}
- (CGFloat)x {
    return self.frame.origin.x;
}
- (void)setY:(CGFloat)y {
    CGRect frame = self.frame;
    frame.origin.y = y;
    self.frame = frame;
    self.frame = frame;
}
- (CGFloat)y {
    return self.frame.origin.y;
}
- (void)setWidth:(CGFloat)width {
    CGRect frame = self.frame;
    frame.size.width = width;
    self.frame = frame;
}
- (CGFloat)width {
    return self.frame.size.width;
}
- (void)setHeight:(CGFloat)height {
    CGRect frame = self.frame;
    frame.size.height = height;
    self.frame = frame;
}
- (CGFloat)height {
    return self.frame.size.height;
}
- (void)setOrigin:(CGPoint)origin {
    CGRect frame = self.frame;
    frame.origin = origin;
    self.frame = frame;
}
- (CGPoint)origin {
    return self.frame.origin;
}
- (void)setSize:(CGSize)size {
    CGRect frame = self.frame;
    frame.size = size;
    self.frame = frame;
}
- (CGSize)size {
    return self.frame.size;
}
@end

现在就可以通过下面方式对UIView进行布局了:

UIView *view = [UIView new];
view.width = 100;
view.height = 100;
view.x = 100;
view.y = 100;
//或者
view.origin = CGPointMake(100, 100);
view.size = CGSizeMake(100, 100);

最后你可能有疑问,category中不是不能定义属性么?即使可以定义属性,不应该用runtime来实现setter跟getter方法么?

  1. category中的属性不能自动生成实例变量(类似:_xxx),所以我们有时会看到通过runtime的方式将变量绑定到实例上。
  2. 上面例子,定义属性为了生成setter跟getter方法。没有用到任何有关self.xself.yself.width或者_x_y这些自定义属性,都是通过UIView自带属性frame(self.frame)来实现给UIView设置布局,所以不需要用runtime。所以本例子不定义属性也可以,把属性注释掉,然后将下面方法取消注释,一样能用。

–EOF–

引入JS文件

在default.hbs中引入js文件,下载TOC

//放在jQuery之后
<script src="https://xxxxxx.com/jquery.toc.min.js"></script>

添加DIV

在post.hbs文件的</main>标签之前添加下面代码

<aside id="toc">
    <h4>文章目录</h4>
</aside>

设置样式

在博客的css文件里设置样式,代码如下:

#toc {
    font: 400 16px/1.8 "Open Sans","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;
    position: fixed;
    display: none;
    left:50%;
    top: 50%;
    width: 180px;
    max-height: 100%;
    padding: 0 5px;
    overflow-y: auto;
}
#toc ol {
    margin: 0 0 0 1em;
    list-style: none;
    padding: 0;
}
#toc li {
    padding: 0;
    position: relative;
}
#toc li:before {
    border: 5px dashed transparent;
    border-left: 5px solid #57a3e8;
    position: absolute;
    left: -1em;
    top: .5em;
}
#toc li:before {
    content: "";
    height: 0;
    width: 0;
    overflow: hidden;
}
#toc a {
    display: block;
    color: #6aa7c0;
    cursor: pointer;
    max-height: 2em;
    white-space: nowrap;
    text-overflow: ellipsis;
    overflow: hidden;
    text-decoration: none;
    transition: color .3s;
}
#toc a:hover {
    color: #F3A01E;
}
#toc h4 {
    padding-bottom: 0.25em;
    margin: .75em 0;
    border-bottom: 1px solid #b3b3b3;
    font-size: 18px;
    color: #3b3b3b;
    font-family: "Open Sans","Hiragino Sans GB","Microsoft YaHei","WenQuanYi Micro Hei",sans-serif;
}

初始化目录插件并动态的调整样式

在博客下的JS文件中添加下面代码:

$(document).ready(function() {
    //初始化插件
    $('#toc').initTOC({
        selector: "h5, h6",
        scope: "article",
        overwrite: false,
        prefix: "toc"
    });
    //动态设置样式,例如:滚动到一定程度之后隐藏目录
    var mar_left = $(".post").width() / 2 + 20;
    //var top = $("#toc").css("top"); 这只能获取类似152px的字符串,下面才能获取值
    //var top = $("#toc").position().top;
    var top = $(window).height();
    $("#toc").css("top",top / 2 - (top / 4)+"px");
    $("#toc ol").html(function(i,origText){
        return origText + "<li><a id='scrollTop' href='#'>返回顶部</a></li>";
    });
    $("#toc").css({"margin-left":mar_left+"px"});
    $(window).scroll(function(){
        var window_offset = $(window).scrollTop();
        var main_header_height = $(".main-header").height();
        var content_height = $(".content").height();
        if(window_offset < main_header_height - 100) {
            $("#toc").hide();
            //下面的条件不能用 a>x>c这种形式,只能用&&.身为一个前端小白表示伤不起...
        }else if(window_offset > main_header_height&&main_header_height+content_height - 500 > window_offset) {
            $("#toc").show();
        }else{
            $("#toc").hide();
        }
    });
});

以上就是我博客的文章目录添加步骤.前端有个好处就是所见即所得,慢慢折腾.^_^

–EOF–

#import <Foundation/Foundation.h>
@interface Tom : NSObject
@property (nonatomic,copy) NSString *name;
@property (nonatomic) NSInteger age;
@end
@implementation Tom
- (instancetype)initWithName:(NSString *)name andAge:(NSInteger)age {
    if (self = [self init]) {
        self.name = name;
        self.age =age;
    }
    return self;
}
@end
@interface Jerry : NSObject
@property (nonatomic) NSString *name;
@property (nonatomic) NSInteger age;
@end
@implementation Jerry
- (instancetype)initWithName:(NSString *)name andAge:(NSInteger)age {
    if (self = [self init]) {
        self.name = name;
        self.age =age;
    }
    return self;
}
@end
@interface Test : NSObject
@end
@implementation Test
+ (void)showName:(Tom *)tom {
    NSLog(@"%@",tom.name);
}
+ (void)showNameWithKVC:(NSObject *)obj{
    NSString *name = [obj valueForKey:@"name"];
    NSLog(@"%@",name);
}
@end
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Tom *tom = [[Tom alloc]initWithName:@"Tom" andAge:10];
        Jerry *jerry = [[Jerry alloc]initWithName:@"Jerry" andAge:10];
        //可以通过强转的方式
        [Test showName:(Tom *)jerry];
        [Test showName:tom];
        //也可以通过KVC
        [Test showNameWithKVC:jerry];
        [Test showNameWithKVC:tom];
    }
    return 0;
}

–EOF–

用密码登录SSH好不方便,并且安全性不高,为了提升安全性那我们就用密钥登录.

本地环境:OS X,估计是Linux就可以.

1.在远程服务器上创建密钥对.

# create key pair
[cent@dlp ~]$ ssh-keygen -t rsa -c "邮箱"
Generating public/private rsa key pair.
Enter file in which to save the key (/home/cent/.ssh/id_rsa): # 路径默认,直接回车
Created directory '/home/cent/.ssh'.
Enter passphrase (empty for no passphrase): # 设置密钥密码,直接回车,不用设置
Enter same passphrase again:#再次输入密码,直接回车
Your identification has been saved in /home/cent/.ssh/id_rsa.
Your public key has been saved in /home/cent/.ssh/id_rsa.pub.
The key fingerprint is:
38:f1:a4:6d:d3:0e:99:c8:fa:1d:1d:48:86:f0:fe:74 cent@dlp.server.world
The key's randomart image is:
[cent@dlp ~]$ mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys#将id_rsa.pub中的公钥复制到authorized_keys中
[cent@dlp ~]$ chmod 600 ~/.ssh/authorized_keys #修改authorized_keys权限为拥有者可读写

2.将远程服务器上的私钥下载到本地用于登录远程服务器

以下是本地操作

 [cent@www ~]$ mkdir ~/.ssh #创建文件夹
[cent@www ~]$ chmod 700 ~/.ssh #修改文件夹权限为拥有者可'读,写,执行'
# copy the secret key to local ssh directory
[cent@www ~]$ scp cent@10.0.0.30:/home/cent/.ssh/id_rsa ~/.ssh/ #将远程的私钥下载到本地,这要注意路径,如果用root登录的,路径是:/root/.ssh/id_rsa
cent@10.0.0.30's password: #输入远程服务器密码
id_rsa
[cent@www ~]$ ssh -i ~/.ssh/id_rsa cent@10.0.0.30 #现在就可以用这条命令登录远程服务器了
Enter passphrase for key '/home/cent/.ssh/id_rsa': # 刚才密钥没设置密码,所以不会出现
Last login: Wed Jul 30 21:37:19 2014 from www.server.world
[cent@dlp ~]$ # 登录成功

3.简化登录

本地机器执行下面代码:

vi ~/.ssh/config

加入下面一段内容:

Host server #别名,域名缩写
    HostName jingxuetao.com #完整的域名
    User root #登录该域名使用的账号名
    PreferredAuthentications publickey #加不加都一样,SSH会优先密钥登录
    IdentityFile ~/.ssh/id_rsa #私钥文件的路径
    #删掉#号后面的中文,包括这句

上面配置完了之后就可以通过ssh server或者ssh jingxuetao.com来登录远程服务器了.

4.关闭密码验证登录

操作远程服务器

vi /etc/ssh/sshd_config

找到PasswordAuthentication将其值改为no

PasswordAuthentication no

最后用systemctl restart sshd或者service sshd restart重启SSH服务

好了,sshd_config文件中除了配置PasswordAuthentication这条之外其他的并不用配置,还是被注释状态

保存到本地的密钥,最好备份到网盘一份.

本文参考:server-world

–EOF–

前一天过得不踏实,心里不安,胡思乱想中想起博客名,就想起了高中,然后又想起了初中.然后百度了一下初中跟高中的官网,于是就找了一些图片,回忆一下我的初中跟高中.多图预警

平度市朝(zhao)阳中学

教学楼正面,教学楼从上面看是呈一个蝴蝶状的.初三的时候做课间操就是在教学楼前的广场上做.我们班在做操的时候是在广场中央,因为喇叭是安装在两边的教学楼上的并且对称,所以在做操的时候会有不一样的听觉效果.第一张图片是当时我们的朝阳中学的原图,下面三张图是后来的华侨高中.因为乡镇高中要迁往市里,所以就把我们学校给征收了,变成了华侨高中.好好的母校,被别人征去当高中,真是亏.




教学楼背面.由于花钱不太节制,家里给的生活费第一个周花的差不多了,到了第二个周就只剩二三十块钱左右,二三十块钱要过五天,平均每天也就五六块钱.所以每当中午放学的时候,听着喇叭里放的斯卡波罗集市,走在这条回宿舍的路上(没钱,只能回宿舍,就着调料啃馒头:(),心里有点淡淡的忧伤.歌曲如下:

<斯卡波罗集市-莎拉布莱曼>

操场,应该是初二的时候修起来的.之前都叫草场,杂草丛生,草有人那么高.

左边是一个小操场,初二的时候做广播体操,早晨跑操都在这.右边是女生宿舍,当时好像没窗帘..

餐厅拐角处的一棵树.树的右边是一个大花坛(图中没有),想当年’老邱’(学生处主任,武警出身)在这整过两个带刀外校学生.

教学楼,宿舍楼东边的一条路,灯是后来装的

对了,我们那一级是16个班,然而其他初中就算全校也没有16个班啊有木有,所以我们会说’拉我们一个级部出去可以打其他学校的整个学校’.不过后来招的学生就慢慢变少了,我们下一级好像是14个班.这几年好像8个班…

平度市开发区高中

高中跟初中比起来就比较老旧了,因为初中是06年刚搬到新校区.而高中一直是这个校区.然而一中,九中都换了新校区,并且其他几所高中由于跟一中九中合并,同样也是新校区,就我们学校.万恶的资本主义,唉.

仁卿楼,主教学楼,楼前一本大书,内容是劝学(劝学是个什么鬼,劝你退学,恩!),左边是中文版,右边是英文版


仁卿楼广场西边,餐厅南边的小花坛,再往西是高二西教学楼

高二西教学楼前的草坪,想起了被班主任没收的手机…

高二西教学楼前的走廊

仁卿楼广场西面的办公楼,高三临近毕业的时候正式入团(共青团)就是在这弄得^_^,少交了好几年团费,不亏.

高中官网上的图片差不多就这些了,大一的时候高中又重修了一座教学楼跟操场,说好的重建校区呢??看来重建校区是没希望了..

有时间一定回去看看,但是什么时候有时间呢?这是个问题.

好了,矫情完毕,睡觉.

–EOF–